Рубрика «wpf» - 8

MugenMvvmToolkit

Введение

Паттерн MVVM хорошо известен, о нем написано много статей, наверное, каждый NET-разработчик сталкивался или слышал об этом паттерне. Цель этой статьи – рассказать о собственной реализации этого паттерна.
MugenMvvmToolkit — является кроссплатформенной реализацией паттерна MVVM и на текущий момент поддерживает следующие платформы:

  • WinForms
  • WPF
  • Silverlight 5
  • Silverlight for WP7.1, WP8, WP8.1
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms
  • WinRT XAML framework for Windows 8 Store apps

Читать полностью »

Представим типичный пользовательский интерфейс. Есть несколько элементов управления, которые запускают некоторые повторяемые (за время жизни приложения) действия разной сложности. Чтобы сложные действия, такие как обращение к различным носителям, обращение к сети или сложное вычисление, не снижали отзывчивость интерфейса, они должны быть асинхронными. Дополнительно могут быть элементы управления, отменяющие асинхронно запущенное действие. Действие имеет свойство состояния (неактивно, запущено, завершено успешно, завершено с ошибкой, отменено), которое тем или иным образом отображается пользователю. Принятый в WPF, Silverlight и WinPhone шаблон проектирования MVVM диктует, чтобы такое «действие» было частью модели представления, давая возможность вызывать сервисы модели из пользовательского интерфейса без создания между ними жёсткой связи. К сожалению, такое «действие» в базовой библиотеке классов не реализовано. Ближайшие имеющиеся в библиотеке сущности, такие как задачи System.Threading.Tasks.Task, команды System.Windows.Input.ICommand и делегаты System.Delegate, не подходят: задачи всегда одноразовые и не могут представлять повторяемое действие, делегаты и команды не поддерживают отмену и не содержат свойств состояния, а команды вообще не могут быть асинхронными. Далее я предлагаю решение в виде небольшой библиотеки классов, дающей возможность легко использовать описанные «действия» в ваших приложениях.
Читать полностью »

Портативная дистрибуция .Net приложений с отчетами Microsoft Report Viewer и Oracle Instant Client

Довольно часто возникает необходимость или желание отказаться от создания инсталлятора и совершать дистрибуцию приложения, копируя папку с файлами на целевой компьютер. Если вам интересно как создать портативный дистрибутив .Net приложения с отчетами Report Viewer или как портативно скопировать клиента и драйвера для доступа к базе Oracle, прошу под кат. Я постараюсь все подробно объяснить.

В качестве практической части будет рассмотрено создание приложения, отображающего отчеты для торговой системы Супермаг (которая, собственно, и использует базу Oracle).
Читать полностью »

Платформы WPF и Silverlight используют язык разметки XAML для описания элементов пользовательского интерфейса, шаблонов и стилей. Если вы разрабатываете одновременно под разные XAML платформы, то естественно, возникает желание иметь общие файлы разметки для этих платформ.

Разметка в WPF и Silverlight очень схожа, но имеются досадные отличия, которые сильно осложняют ее шаринг. В нашей компании эта проблема была решена несколько лет назад в виде внутреннего инструмента, который называется WPF2SL.

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

Привет!

В начале июня этого года мы анонсировали выход новой версии наших продуктов для .NET и фреймворка для мобильных и клиентских HTML5 приложений DevExtreme.

Посетителям нашего стенда на DevCon’e 2014 уже были приоткрыты некоторые возможности новой версии. Для тех, кто хочет сэкономить своё время, мы приготовили небольшой ролик про то, что нового и интересного появилось в DevExpress Universal 14.1:

Полный список обновлений и улучшений .NET и DevExtreme продуктов доступен на сайте DevExpress.

Под катом – обзор некоторых масштабных нововведений.
Читать полностью »

(Примечание: статья рассчитана на начинающего программиста)

На днях, вернее, сегодня, начал изучать новый для меня вид разработки приложений — Windows Presentation Foundation и сразу столкнулся с огромным наплывом вопросов, первым в списке которых числится «Как получить строку из ресурса»?
Перечитав множество статей в поисковике, я не нашел рабочего для себя кода (разве что для .NET Framework 3.5), а так как пробую писать приложения на VS2012 под .NET Framework 4.5, этот вариант мне не подходит.

image

Проведя множество времени в поисках оптимального рабочего кода, собрал знания из нескольких источников и добился своего!

Читать полностью »

MVVM Framework для Windows Phone своими руками. Часть 1 Разработка приложений для платформ WPF, Silverlight, Windows Store и Windows Phone, почти всегда подразумевает использование паттерна MVVM. Это закономерно, так как базовой философией этих платформ, является разделение представления (так же я буду использовать термин интерфейс пользователя) и остальной логики программы. Этот подход позволяет получить следующие преимущества:

  1. Разделение пользовательского интерфейса и логики представления: что позволяет дизайнерам работать над пользовательским интерфейсом, а программистам над бизнес логикой приложения используя для взаимодействия абстрактный интерфейс модели представления
  2. Расширенные возможности автоматизированного тестирования: отделение пользовательского интерфейса от остальной логики, позволяет полностью протестировать логику представления без ограничений накладываемых автоматизацией тестирования через пользовательский интерфейс
  3. Множественные представления для одной модели представления: одна модель представления может использоваться многими реализациями интерфейса пользователя. Например, сокращенный и полный вариант представления данных, интерфейс зависящий от прав пользователя. Возможность использовать одну реализацию модели представления на различных платформах
  4. Расширенные возможности повторного использования компонентов: так как модели представления отделены от реализации представления, возможны любые варианты их использования, наследование от базовых моделей, композиция нескольких моделей и т.п.

Разрабатывая приложения под платформу Windows Phone, я столкнулся с тем, большинство статей описывают базовую реализацию паттерна MWWM, которая обычно сводится к реализации в классе модели представления интерфейса INotifyPropertyChanged, создания простой реализации ICommand и простые сценарии связывания этих данных с представлением. К сожалению, остаются за рамками обсуждения такие важные вопросы как, реализация обобщенных классов с удобным интерфейсом, синхронизация потоков при асинхронном исполнении, навигация на уровне модели представления и многие другие.

Читать полностью »

Введение

WPF — замечательная технология, которую, не смотря на все ее недостатки, очень люблю. Тем не менее, часто приходится писать не разметку, а код, который помогает первой работать как надо. Хотелось бы этого избегать и писать чистый XAML, но до сих пор ни одно мое приложение сложнее простого не обходилось без различных хелперов (классов-помощников), написанных на C#. К счастью, есть распространенные случаи, где можно одним хелпером решить сразу группу проблем.

Речь ниже пойдет о привязке в обычных свойствах визуальных элементов, которые не являются свойствами зависимостей (dependecy properties). Штатными средствами WPF этого сделать не получится. Ко всему прочему, мы не можем узнать об изменениях такого свойства, кроме как подписавшись на специальное событие, что противоречит шаблону MVVM. Такие события для каждого свойства могут быть свои. Самый распространенный пример — это PasswordBox и его свойство Password. Так у нас сделать не получится:

<PasswordBox Password={Binding OtherProperty} />

Не будем вдаваться в подробности, зачем разработчики PasswordBox не разрешили привязываться к свойству пароля. Подумаем, что тут можно сделать.
Читать полностью »

С момента появления сенсора Kinect for Windows я питал тихую страсть к программированию такого рода устройств – ведь это волшебное чувство, когда написанная тобой программа отзывается на движения человека на расстоянии! Сегодня я расскажу вам про программирование ещё одного похожего устройства – Leap Motion.

Цифровой терменвокс на базе Leap Motion (powered by .NET) Цифровой терменвокс на базе Leap Motion (powered by .NET)

По сути дела, Leap Motion – это небольшой Kinect, который может распознавать положение кистей рук. По замыслу создателей (хорошо отраженных в этом видео), его можно использовать для управления компьютером во множестве различных сценариев. В этом посте мы рассмотрим, как программируется Leap Motion (на платформе .NET), и как можно на его основе создать простой музыкальный инструмент – терменвокс. Вот такой:


Читать полностью »

Доброго времени суток.

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

Не нашел на хабре пост посвященный данной теме, поэтому представляю вам свой перевод статьи Пола МакКлина, которая стала отправной точкой в решении поставленных задач.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js