Страницы

суббота, 11 мая 2013 г.

IntelliSense для Binding выражений в редакторе XAML

При работе в WPF во XAML приходится писать много выражений связывания контролов с property ViewModel. Все хорошо, но приходится помнить имена property и очень высока вероятность ошибки.

Для того, что бы упроситить себе жизнь, надо заставить IntelliSense помогать, показывая доступные на ViewModel property. Как оказалось, все достаточно просто.
Обычно (при подходе view-first) конструктор View выглядит следующим образом:
View создается через IoC контейнер, который сам создает ViewModel. Т.е. типизация DataContext происходит динамически и в режиме дизайна недоступна для использования, ну это конечно не совсем верно, но для упращения будем считать так.
Для того, что бы точно указать тип используемой ViewModel на момент дизайна view, и позволить IntelliSense делать подсказки, необходимо выполнить следующий порядок действий:

1. Изменение ViewModel
Необходимо создать во ViewModel конструктор по умолчанию, без параметров. В реальной жизни, такой конструктор обычно не используется, т.к. ViewModel необходимы внешние сервисы. Поэтому при создании ViewModel в run-time через IoC контейнер, сработает конструктор с максимальным количеством элементов (если конечно, другое не указано специальным способом).

2. Внести изменения в XAML объявления.
В декларативную часть объявления View, мы добавляем ссылку на ViewModel и указываем  DataContext в режиме дизайна.
После этого, у нас прекрасно срабатывает IntelliSense, показывая доступные property ViewModel

Комментариев нет :

Отправить комментарий