Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Собираем пользовательскую активность в WPF

Блог компании Developer SoftПрограммирование.NETC#Разработка под Windows
Недавно мы рассказывали о том, как можно логировать действия пользователей в WinForms приложениях: Оно само упало, или следствие ведут колобки. Но что делать, если у вас WPF? Да нет проблем, и в WPF есть жизнь!



В WPF не надо будет вешать никаких хуков и трогать страшный винапи, собственно за пределы WPF мы и не выйдем. Для начала вспомним, что у нас есть routed events, и на них можно подписываться. В принципе, это все, что нам надо знать, чтобы реализовать поставленную задачу :)
Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Просмотры8.1K
Комментарии 20

Упрощаем лог действий пользователя

Блог компании Developer SoftПрограммирование.NETC#

В предыдущих статьях мы сделали большое и доброе дело — научились автоматически собирать предысторию падения программы и отправлять её с крэш-репортом. Для WinForms, WPF, ASP, Javascript. Теперь научимся показывать все эти горы информации в удобоваримом виде.
Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Просмотры9.3K
Комментарии 12

Кроссплатформенная новогодняя демка на .NET Core и Avalonia

Ненормальное программированиеПрограммирование.NETC#Разработка под Linux

"ААА! Пришло время переписывать на .NET Coreǃ", говорили они, WPF в комментариях обсуждали. Так давайте же проверим, можно ли написать кросс-платформенное GUI приложение на .NET / C#.



Новогоднее настроение навеяло идею сделать анимацию падающего снега. Были такие демки под DOS, горящий огонь, фракталы, снежок, падающий на ёлочку, и так далее.


Как увидим ниже, это не только весело, но и позволит испытать ключевой функционал UI фреймворка. Поехали!

Читать дальше →
Всего голосов 55: ↑52 и ↓3 +49
Просмотры25K
Комментарии 55

Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia

Open sourceПрограммирование.NETC#Разработка под Windows

Состоялся релиз первой бета-версии Авалонии.


Avalonia — кроссплатформенный .NET UI-тулкит, вдохновлённый технологиями WPF и распространяемый под лицензией MIT. Он полностью поддерживает .NET Core 2.0, XAML, дата-биндинги, lookless-контролы и многое другое. Avalonia позволяет писать на C# приложения под Windows, Linux и Mac OS X. Возможность запуска на iOS и Android находится в экспериментальном состоянии.



Данная версия стабильна и имеет полное право называться бетой: тулкит не разваливается в руках и имеет приличный базовый набор контролов (см. видео). На нём создано два достаточно больших приложения с открытым исходным кодом: AvalonStudio — кроссплатформенная IDE для разработки на C# и C++ и Core2D — редактор 2D-схем и диаграмм.

Читать дальше →
Всего голосов 100: ↑97 и ↓3 +94
Просмотры20.2K
Комментарии 77

Знакомство с Gjallarhorn.Bindable.WPF (F#) на примере выполнения тестового задания

.NETF#
Из песочницы

В статьях на русском языке теме использования F# совместно с WPF уделяют немного внимания.


Сегодня я попробую познакомить вас с одной из F# библиотек, которая значительно упрощает такую разработку.


В качестве демонстрационного примера возьмем одно из тестовых заданий по WPF, которые дают соискателям на должность Junior-разработчика для проверки их знаний.


Само задание звучит так


Необходимо разработать приложение с использованием данных, представленных в файле Students.xml.

Указанный файл содержит следующие сведения о студентах: фамилия, имя, возраст, пол.

Конечно, есть дополнительные рекомендации и ограничения на реализацию, но не будем копировать их целиком. Основные части будут приведены в тексте при необходимости, а полная версия доступна здесь

Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Просмотры3.7K
Комментарии 2

Используем пространство экрана оптимально с помощью WPF Data Triggers и Stack

.NETГрафические оболочкиОболочкиGTDРазработка под Windows
Recovery mode
В этой статье речь пойдёт о том, как использовать WPF Data Triggers в схеме разбиения монитора Stack для того, чтобы полностью автоматически отдавать приложению всё пространство рабочего стола, когда другие приложения не запущены. Stack — это тайловый менеджер окон для Windows, использующий WPF XAML в качестве языка разметки экрана.

Поставляющаяся из коробки схема разбиения экрана для больших мониторов (см. под катом) разбивает рабочий стол на 2 главные зоны — центральную (я обычно использую её для браузеров и IDE) и боковую (туда попадают RSS Reader, мессенжеры и окна терминалов). Эта схема фиксирована. Т.е. если у вас открыт только браузер, Stack оставит пустое место слева от него. В этой статье я покажу как использовать WPF Data Triggers и Data Binding, чтобы схопывать эту область автоматически, когда она пустая.
Читать дальше
Всего голосов 9: ↑7 и ↓2 +5
Просмотры4K
Комментарии 2

ReactiveValidation: валидация данных в WPF

Open source.NETC#
Из песочницы
Здравствуй, Хабр!

Мне хотелось бы рассказать об Open Source библиотеке для WPF — ReactiveValidation, в процессе написания которой я пытался ориентироваться на FluentValidation и Reactive UI. Её задача — это валидация формы каждый раз, когда пользователь изменил данные внутри неё.


Пример работы с библиотекой. Хорошая новость — шаблон можно использовать свой

Основные фичи библиотеки:

  • Правила создаются через fluent-интерфейс
  • Полный внутренний контроль над изменением свойств
  • Поддержка локализации (в том числе «на лету»)
  • Отображение сообщений в GUI
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры8.1K
Комментарии 4

Кроссплатформенная разработка с помощью .NET, реактивного программирования, шаблона MVVM и кодогенерации

Программирование.NETC#Разработка под Windows
Из песочницы
Reactive MVVM and .NET Standard

Сегодня платформа .NET является по-настоящему универсальным инструментом – с её помощью можно решать широчайший круг задач, включая разработку прикладных приложений для популярных операционных систем, таких, как Windows, Linux, MacOS, Android и iOS. В настоящей статье рассмотрим архитектуру кроссплатформенных .NET приложений с использованием шаблона проектирования MVVM и реактивного программирования. Познакомимся с библиотеками ReactiveUI и Fody, научимся реализовывать интерфейс INotifyPropertyChanged с помощью атрибутов, затронем основы AvaloniaUI, Xamarin Forms, Universal Windows Platform, Windows Presentation Foundation и .NET Standard, изучим эффективные инструменты для модульного тестирования слоёв модели и модели представления приложения.

Материал является адаптацией статей "Reactive MVVM For The .NET Platform" и "Cross-Platform .NET Apps Via Reactive MVVM Approach", опубликованных автором ранее на ресурсе Medium. Примеры кода доступны на GitHub.
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Просмотры17.1K
Комментарии 7

Баг при работе TextBox.GetLineText в .NET WPF

Блог компании Перспективный мониторингПрограммирование.NETVisual Studio
Для проведения исследований работы программ и ОС существует очень много различного инструментария. Виртуальные машины, IDE, умные блокноты, IDA, radare, hex-редакторы, pe-редакторы, и даже одних утилит Sysinternals больше сотни — все это сделано для облегчения многих рутинных операций. Но иногда наступает момент, когда ты понимаешь, что среди всего этого многообразия тебе не хватает небольшой утилитки, которая просто сделает банальную и нехитрую работу. Можно написать скрипты на питоне или Powershell на коленке, но нередко на такие поделки без слез не взглянешь и с коллегами не поделишься.

Недавно такая ситуация снова наступила у меня. И я решил, что пора просто взять и написать аккуратную утилиту. О самой утилите я расскажу в одной из ближайших статей, но об одной из проблем во время разработки расскажу сейчас.

Ошибка проявляется так – если в WPF приложении, в стандартный контрол TextBox воткнуть много строк текста, то вызовы функции GetLineText() начиная с некоторого индекса будут возвращать неправильные строки.


Неправильность заключается в том, что хоть строки будут из установленного текста, но расположенные дальше, фактически GetLineText() будет просто пропускать некоторые строки. Ошибка проявляется при очень большом количестве строк. Так я ее и встретил – попытался отобразить в TextBox’е 25 мегабайт текста. Работа с последними строками выявила неожиданный эффект.

Гугл подсказывает, что ошибка существует с 2011 года и Microsoft не особо торопится что-то исправлять.
Посмотрим на пример и найдем проблему
Всего голосов 24: ↑22 и ↓2 +20
Просмотры3.6K
Комментарии 9

Быстрый старт с WPF. Часть 1. Привязка, INotifyPropertyChanged и MVVM

.NETРазработка под Windows
Tutorial

Всем привет!


По разным причинам большинство из нас использует десктопные приложения, как минимум, браузер :) А у некоторых из нас возникает необходимость в написании своих. В этой статье я хочу пробежаться по процессу разработки несложного десктопного приложения с использованием технологии Windows Presentation Foundation (WPF) и применением паттерна MVVM. Желающих продолжить чтение прошу под кат.

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры40.8K
Комментарии 45

XAML Behaviors для WPF теперь Open Source

Блог компании Microsoft.NETXMLC#
Перевод
Рады сообщить, что совсем недавно XAML Behaviors для WPF стал Open Source.

В прошлом году мы открыли исходный код XAML Behaviors для UWP, который имел большой успех, и пакет Behaviors NuGet был загружен более 500 000 раз. XAML Behaviors для WPF теперь поставляется в виде пакета NuGet — Microsoft.Xaml.Behaviors.Wpf. Подробнее под катом!

Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры7.2K
Комментарии 2

Если окна открывают, значит — это кому-нибудь нужно

.NETC#Разработка под Windows
Tutorial
Однажды мне потребовалось открыть окно из консольного приложения. Я хотел это сделать используя wpf, но информации, разбросанной по сети оказалось мало, так что я решил как-то систематизировать и представить этот маленький туториал.
Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Просмотры4K
Комментарии 15

PowerShell, дамп моего опыта

Системное администрированиеPowerShell
Tutorial

Введение


Эта статья адресована тем, кто уже познакомился с основами PowerShell, запускал какие-то скрипты со stackexchange и, вероятно, имеет свой текстовый файл с теми или иными сниппетами облегчающими повседневную работу. Целью её написания есть уменьшение энтропии, увеличение читаемости и поддерживаемости кода PowerShell используемого в вашей компании и, как следствие, повышение продуктивности администратора работающего с ним.


kdpv


На своём предыдущем месте работы я в силу специфики задач и несовершенства мира, сильно прокачал навык работы с PowerShell. После смены работы нагрузки такого рода сильно снизились и всё что было вот-вот еще на кончиках пальцев стало всё глубже тонуть под опытом решения новых задач на новых технологиях. От того эта статья претендует быть лишь тем, чем себя объявляет, раскрывая список тем, который на мой взгляд был бы полезен мне самому лет 7 назад, тогда, когда моё знакомство с этим инструментом только начиналось.

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры29.7K
Комментарии 46

DynamicData: Изменяющиеся коллекции, шаблон проектирования MVVM и реактивные расширения

Программирование.NETC#Разработка под Windows


В феврале 2019 года состоялся релиз ReactiveUI 9  —  кроссплатформенного фреймворка для построения приложений с GUI на платформе Microsoft .NET. ReactiveUI  — это инструмент для тесной интеграции реактивных расширений с шаблоном проектирования MVVM. Знакомство с фреймворком можно начать с серии статей на Хабре или со вступительной страницы документации. Обновление ReactiveUI 9 включает в себя множество исправлений и улучшений, но, пожалуй, самое интересное и значимое изменение — тесная интеграция с фреймворком DynamicData, позволяющим работать с изменяющимися коллекциями в реактивном стиле. Попробуем разобраться, в каких случаях нам может пригодиться DynamicData и как устроен внутри этот мощный реактивный фреймворк!
Читать дальше →
Всего голосов 36: ↑36 и ↓0 +36
Просмотры12.6K
Комментарии 4

Релиз кросс-платформенного .NET UI-тулкита AvaloniaUI 0.8

Open sourceПрограммирование.NETC#

Состоялся очередной бета-релиз AvaloniaUI.



В релиз вошло большое количество багфиксов, оптимизаций производительности и ряд новых возможностей. Что нового, можно узнать под катом.

Читать дальше →
Всего голосов 84: ↑84 и ↓0 +84
Просмотры16.4K
Комментарии 23

C# WPF аналог Window.ShowDialog() или разбираемся с DispatcherFrame

.NETC#Разработка под Windows
Из песочницы

Постановка задачи


В рамках разработки одного приложения потребовалось реализовать такую схему:


  1. Асинхронный метод запрашивает данные
  2. Пользователь вводит данные с клавиатуры
  3. Метод получает результат ввода как результат выполнения функции и продолжает с того же места

Дополнительные требование: Не создавать дополнительных окон.


Казалось бы, просто? Как оказалось, действительно просто. Но обо всём по порядку.

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры4.7K
Комментарии 3

DynamicData: Dynamic Collections, the MVVM Architecture, and Reactive Extensions

Программирование.NETC#Разработка под Windows
Перевод


February 2019 marked the release of ReactiveUI 9 — the cross-platform framework for building GUI applications on the Microsoft .NET platform. ReactiveUI is a tool for tight integration of reactive extensions with the MVVM design pattern. You could familiarize yourself with the framework via a series of videos or the welcome page of the documentation. The ReactiveUI 9 update includes numerous fixes and improvements, but probably the most crucial and interesting one is integration with the DynamicData framework, allowing you to work with dynamic collections in Reactive fashion. Let’s find out what we can use DynamicData for and how this powerful reactive framework works under the hood!

Read more →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры10.1K
Комментарии 2

MVVM реализация конфигурации WPF приложения построенного на основе фреймворка Catel

.NETC#
Tutorial

Реализация управления настройками ПО это, вероятно, одна из тех вещей, которую практически в каждом приложении реализуют по своему. Большинство фреймворков и прочих надстроек обычно предоставляют свои средства для сохранения/загрузки значений из какого-либо key-value хранилища параметров.


Тем не менее, в большинстве случаев реализация, конкретного окна настроек и связанных с ним множества вещей оставлена на усмотрение пользователя. В данной заметке хочу поделиться подходом, к которому удалось придти. В моем случае нужно реализовать работу с настройками в MVVM-friendly стиле и с использованием специфики используемого в данном случае фреймворка Catel.


Disclaimer: в данной заметке не будет каких-либо технических тонкостей сложнее базовой рефлексии. Это просто описание подхода к решению небольшой проблемы, получившегося у меня за выходные. Захотелось подумать, как можно избавиться от стандартного boilerplate кода и копипасты, связанной с сохранением/загрузкой настроек приложения. Само решение оказалось довольно тривиальным благодаря удобным имеющимся средствам .NET/Catel, но возможно кому-нибудь сэкономит пару часов времени или наведет на полезные мысли.

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры5K
Комментарии 0

Портирование WPF приложений на netcore 3.0

Блог компании Directum.NET

Ожидаемый релиз netcore 3.0 позволяет запускать wpf на netcore. Процедура перевода для одного несложного проекта занимает один-два дня. Каждый последующий — много быстрее.





Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры9.1K
Комментарии 18

.NET Core 3 для Windows Desktop

Блог компании MicrosoftПрограммирование.NETC#Разработка под Windows
Перевод
В сентябре мы выпустили поддержку .NET Core для создания настольных приложений Windows, включая WPF и Windows Forms. С тех пор мы были рады видеть, что многие разработчики делятся своими историями о переносе настольных приложений в .NET Core. Мы постоянно слышим от .NET-разработчиков настольных приложений для Windows истории о том, как они поддерживают свой бизнес с помощью WPF и Windows Forms, особенно в тех случаях, когда десктоп выигрывает, включая:

  • FOD-приложения (forms over data) с плотным UI
  • Отзывчивый пользовательский интерфейс с низкой задержкой
  • Приложения, которые должны работать в автономном режиме
  • Приложения с зависимостями от кастомных драйверов устройств

Заглядывайте под кат, чтобы узнать больше о преимуществах .NET Core для создания приложений Windows.

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры15.6K
Комментарии 13