Pull to refresh

Анонсирован выпуск .NET Community Toolkit 8.0

.NET *C# *

.NET Community Toolkit - это коллекция классов-хелперов и API, которые могут использовать все .NET - разработчики и которые не зависят от конкретной платформы пользовательского интерфейса.

Toolkit поддерживается и публикуется Microsoft и является частью .NET Foundation.

Читать далее
Total votes 2: ↑2 and ↓0 +2
Views 1.1K
Comments 0

MVVM Light Toolkit

Visual Studio *
Toolkit добавляет в Visual Studio и Blend, новый тип проекта MVVM. Таким образом, на не нужно создавать структуру проекта — все уже сделано за нас.

image

Для детального ознакомления с данным toolkit'ом следует ознакомиться с введением и примером
Total votes 13: ↑7 and ↓6 +1
Views 18K
Comments 7

«Оживление» пользовательского интерфейса

.NET *
image

Приложение не отвечает?!


Многие из тех, кто программирует WPF-приложения, наверное тысячи раз писали конструкцию вида:
{Binding Items}

Если получение элементов коллекции Items выполняется в основном потоке приложения и занимает некоторое время — мы получаем «мертвый» пользовательский интерфейс. Приложение некоторое время не будет отрисовывать изменения состояния и реагировать на пользовательский ввод.
Читать дальше →
Total votes 104: ↑97 and ↓7 +90
Views 31K
Comments 10

OnPropertyChanged со строгими именами

.NET *
Меня дико бесит OnPropertyChanged. Он требует передачи ему строки с именем идентификатора… Мало того, что такой код не верифицируется компилятором, так еще и никакого Intellisence — тайпи весь идентификатор от начала до конца… А если опечатаешся — так проглотит и во время выполнения. Вобщем, нехорошая вещь. Но в MVVM без нее никуда, как и в WPF без MVVM.

Последняя проблема худо-бедно решалась вот таким костылем, содранным отсюда, который вызывался из OnPropertyChanged:
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
  // Verify that the property name matches a real, 
  // public, instance property on this object.
  if (TypeDescriptor.GetProperties(this)[propertyName] == null)
  {
    string msg = "Invalid property name: " + propertyName;

    if (this.ThrowOnInvalidPropertyName)
      throw new Exception(msg);
    else
      Debug.Fail(msg);
  }
}


И вот сегодня я совершенно случайно нашел красивый способ избавится от него.
Читать дальше →
Total votes 43: ↑28 and ↓15 +13
Views 4.1K
Comments 23

Миграция Silverlight приложений с Prism 2.2 на Prism 4 MEF edition

Silverlight *
Подходит время, когда будет объявлено об окончании разработки библиотеки Prism 4, предназначенной для создания модульных и гибких Silverlight и WPF приложений. Новая версия имеет большое число изменений, улучшений и нововведений. В качестве одного из главных нововведений можно отметить добавление поддержки MEF в качестве контейнера (в предыдущей версии поддерживался только Unity контейнер).

В этой статье я хотел бы затронуть вопрос миграции с Prism 2.2 на Prism 4 c учётом перехода на использование MEF контейнера вместо Unity.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 1.5K
Comments 2

Managed Extensibility Framework (MEF) как полигон для экспериментов

Silverlight *
Sandbox
Вопросы к рассмотрению

Вопрос 1: MEF и INotifyPropertyChanged: как уведомить экспортированный объект об изменениях?
Вопрос 2: Уведомление об изменении свойства, импортированного через MEF, как коллекцию (ImportMany).
Вопрос 3: Загрузка XAP-файлов по требованию через MEF.
Вопрос 4: Модальное окно в MVVM-паттерне.
Читать дальше →
Total votes 1: ↑0 and ↓1 -1
Views 2.2K
Comments 0

Разработка с использованием паттерна проектирования Model-View-ViewModel на примере Twitter клиента шаг за шагом

Programming *
Sandbox
Введение

Статья посвящена работе с MVVM и WPF. В ней описывается процесс разработки twitter client. Процесс разработки разбит на шаги. В конце каждого шага читатель параллельно пишущий приложение должен иметь работающее приложение. Каждый последующий шаг добавляет какую-то функциональность к написанному на предыдущем шаге. Используется thirdparty библиотека TweetSharp. Ссылку на исходный код, а так же оригинал статьи, написанный мной на английском, можно найти тут.
Статья рассчитана на новичков в WPF разработке. Но предполагается, что читатель имеет некоторый начальный опыт работы с WPF, в частности освоил data binding.
Я не буду писать зачем нужно использовать MVVM – считаю, что об этом хорошо написано в статье “Приложения WPF с шаблоном проектирования модель-представление-модель представления” от Джоша Смита. Если вы не хотите читать эту статью – просто поверьте мне – неверное спроектированное GUI в случае с WPF превращается в большую головную боль.

Читать дальше →
Total votes 54: ↑43 and ↓11 +32
Views 40K
Comments 24

Установка DataContext вложенным невизуальным объектам в WPF/Silverlight

Developer Soft corporate blog
image
При разработке DXScheduler for WPF мы получили от пользователя сценарий, в котором использовался MVVM шаблон.
Пользовательский объект назначался свойству DataContext нашего планировщика, а в XAML-разметке осуществлялась «привязка» к соответствующим свойствам объекта с использованием Binding-выражений.
Но возникла проблема — планировщик содержал некий невизуальный объект Storage, который хранил набор настроек для данных. В том виде, в котором были записаны Binding-выражения, свойства объекта-стораджа не обновлялись.

О том, как была решена эта проблема, вы узнаете ниже…
Читать дальше →
Total votes 35: ↑29 and ↓6 +23
Views 8.7K
Comments 1

Команде разработчиков MVVM библиотеки Prism нужна ваша помощь

.NET *
В одном из недавних твиттеро-постов я отметил, что работа над библиотекой Prism приостановлена после выхода 4-й версии. В ответ на это я получил сообщения от Ade Miller (бывший дев лид в комманде patterns & practices) и от Bob Brumfield (работает в patterns & practices на проектах Prism, Enterprise Library, и Windows Phone 7 guidance).
Читать дальше →
Total votes 48: ↑34 and ↓14 +20
Views 2.1K
Comments 10

А MVC ли это?

Website development *
Добрый день!

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

За последние две недели, в беседах с десятком знакомых программистов я выяснил, что все представляют себе MVC совершенно по-разному. Доходит до диаметрально противоположных взглядов, но по какой-то причине, все настаивают, что это MVC и что он должен выглядеть именно так, и находятся в полной уверенности, что все его так и видят.
Читать дальше →
Total votes 95: ↑81 and ↓14 +67
Views 24K
Comments 47

Пример использования KnockoutJS

JavaScript *
Sandbox
День добрый, хабрасообщество!В статье будет рассмотрен процесс создания web-страницы редактирования списка пользователей. Готовый пример можно забрать тут. Статья является не обзорной, а приближенной к реальным боевым действиям, потому настоятельно рекомендую ознакомиться с простым примером.
Мне интересны детали
Total votes 42: ↑37 and ↓5 +32
Views 16K
Comments 14

Разработка приложения живого поиска по Twitter с помощью Knockout, jQuery и ASP.NET MVC 3

JavaScript *
Translation
Достаточно не тривиально разработать хорошо спроектированный front-end веб-приложения с уровнем отклика, производительностью и фичами, которые ожидают пользователи сегодня. Легко потеряться в кипящей смеси jQuery обработчиков событий, HTML разметки и AJAX вызовов и даже относительно простой GUI быстро может стать кошмаром для сопровождения.

Один из способов добавления некоторой структуры и порядка на клиентской стороне – использование фреймворка вроде Knockout. Knockout – это свободная Javascript библиотека с открытым исходным кодом, которая помогает реализовать Model-View-View Model (MVVM) паттерн на клиенте. Она хорошо документирована и официальный веб сайт великолепная точка старта с кучей реальных примеров, которые не только демонстрируют использование встроенных фич библиотеки, но и показывают, как расширить её свои собственными фичами.

В этом посте мы рассмотрим, как Knockout может быть использован совместно с плагином отображения, каким-нибудь jQuery и ASP.NET MVC 3 backend (или модель, как вам нравится) для построения простого, но эффективного приложения для живого поиска в Twitter.

Ок, сделаем это.
Total votes 24: ↑22 and ↓2 +20
Views 6.7K
Comments 17

Долгожданный Ciklum .NET Субботник — в Днепропетровске

Ciklum corporate blog
Еще один Сiklum Субботник — теперь по теме .NET пройдет 23 июля в Днепропетровске. Приглашаем практикующих разработчиков .NET-приложений для обмена опытом и знаниями в наш днепропетровский офис. Мы постарались сделать полезное мероприятие с условиями, комфортными не только для общения в неформальной обстановке, но и обучения и передачи опыта. Для этого мы пригласили спикеров не только из Днепропетровска, но и из .NET-сообществ других городов.
Интересности под хабракатом
Total votes 21: ↑17 and ↓4 +13
Views 3.2K
Comments 5

Создание динамического прокси-объекта с помощью dynamic типа

.NET *
Sandbox
Как и многие люди, перед которыми стоит задача написания очередного UI для своего приложения, я периодически сталкиваюсь с необходимостью создания для UI своей собственной модели, которая в какой-то мере повторяет модель предметной области, однако при этом расширяем и/или изменяет ее. И вот что из этого вышло.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 5.2K
Comments 21

KnockoutJS: Фильтрация списков на лету

JavaScript *
В минувшую субботу я имел честь читать доклад о MVVM и KnockoutJS на .NET Saturday в Днепорпетровске.
Доклад был достаточно тепло встречен публикой и у многих появились интересные вопросы,
которые не были раскрыты во время самого доклада.
Собственно говоря, я решил написать публичные ответы на некоторые из них на Хабре.

Сегодня я отвечу на вопрос о template-binding. «Как быть, если мне надо отобразить не все записи, а только подходящие определённым условиям».

Ответ находится под хабракатом.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 11K
Comments 7

KnockoutJS: Ajax grid view с нуля в 40 строк

JavaScript *
В последнее время на Хабре все больше упоминаний о KnockoutJS, и я не останусь в стороне от этого тренда.
Сегодня я расскажу о том как сделать своими руками Ajax Grid View с фильтрацией и переходом по страницам написав, при этом, совсем немного кода.
Начиная писать эту статью я чувствовал себя несколько неловко, да и сейчас ощущение не ушло. Все дело в том, что сама библиотека простая, паттерн MVVM простой, и рассказывать я буду простые вещи. Я уверен, что в ближайшее время Knockout получит достаточно большое распространение. А неловко мне от того, что уже через год-дугой кто-то наткнувшись на эту статью будет обескуражен простотой изложенного материала. Примерно так, как любой из вас сейчас, открывший статью о jQuery от 2007 года.

Кто не испугался предполагаемого баяна, милости прошу под хабракат.

Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Views 14K
Comments 22

Введение в MVVM и KnockoutJS (видео)

JavaScript *
В своей статье о фильтрации списков на Knockout я упоминал, что читал доклад о MVVM и KnockoutJS на .NET Saturday в Днепропетровске.

Совсем недавно подоспело видео и я спешу им поделиться. Хочу заранее немного оправдаться — поначалу я немного тараторил, но потом вошёл в ритм и вроде как всё было достойно.

Сам доклад разделён на 2 части:
  1. рассказ о MVVM с разбором практического примера, как сей паттерн может облегчить жизнь при разработке UI
  2. написание простенького приложения на Knockout в live-режиме. Эта часть доклада всем понравилась больше чем первая, но за несколько моих «затупов» я до сих пор краснею :-)


Посмотреть видео доклада

PS 1: слайды можно скачать тут: bit.ly/qX61m2
PS 2: если вдруг кому нужны исходники демо-проекта — я выложу. Но их как минимум причесать надо
Total votes 8: ↑7 and ↓1 +6
Views 5.2K
Comments 1

Три подхода к методологии построения сложного клиентского приложения

JavaScript *
Наверно, не существует единого рецепта, который бы всех устроил. Это касается любой проблемы. Для разработчиков этот тезис самоочевиден, и вовлеченность в использование и проектирование отдельных инструментов определяется, главным образом, лишь профессионализмом. Изобретение велосипедов романтично и неизбежно.

Особо вероятно изобретение велосипеда, когда рост сложности приложения происходит постепенно и в некотором смысле незаметно. Сложное приложение обычно является богатым приложением (rich), его элементы и особенности специфицированы W3C www.w3.org/TR/backplane. Известный JavaScript-евангелист Addy Osmani так дополнительно определяет сложное приложение: “По-моему, крупное JavaScript приложение есть нетривиальное приложение, требующее значительных усилий разработчика для поддержки, причем наиболее сложное оперирование обработкой и отображением данных ложится на браузер” (http://addyosmani.com/largescalejavascript/).
Читать дальше →
Total votes 40: ↑34 and ↓6 +28
Views 9.7K
Comments 27

Первый тренинг по KnockoutJS от Романа Гомолко в Днепропетровске

Ciklum corporate blog JavaScript *
Дорогие Хабра-читатели,

Спешим похвастаться, что в субботу, 24 Марта, Днепропетровский офис Ciklum принимает в гостях однодневный тренинг Романа Гомолко (romanych) по KnockoutJS.

Выяснить больше деталей о программе мероприятия, целевой аудитории, организации, а также зарегистрироваться вы можете пройдя по ссылке: http://knockoutjs.in.ua/training/

Поскольку тренинг будет проходить на нашей территории, сотрудники Ciklum получат скидку на участие.
Total votes 12: ↑6 and ↓6 0
Views 2.9K
Comments 7

Две маленьких функции, способных упростить жизнь

Website development *JavaScript *
Я знаю про Backbone.js и про Knockout.js
Просто иногда хочется чего-то значительно меньшего.

1. Введение. О чем речь, какова предметная область. Какая существует проблема.

О чем речь: есть JavaScript, «сферический, в вакууме».
Предметная область: объекты и их свойства, то, что задается приведенными ниже способами.

var obj = new Object();
var obj = {};


где свойства, соответственно:

obj.prop = 111;
obj = {
   "prop1" : "value1"
   "prop2" : 2
}


Какая существует проблема:

1. Есть вот такие вот объекты, у них есть эти самые свойства.
2. Хочется узнать, когда свойство было изменено ( часть MVVM pattern )
3. И, соответственно, подписаться на это изменение.

UPD 1Пример в работе, спасибо alist, за очень, по моему мнению, важный комментарий ниже.

Читать дальше →
Total votes 23: ↑13 and ↓10 +3
Views 1.1K
Comments 24