Инжекторы Контекста Xaml

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

Сегодня мы продолжим изучать возможности библиотеки.

Аэрофреймворк и рассмотрим довольно интересную тему о внедрении контекста данных в xaml - разметка представлений, а заодно применить знания из предыдущей статьи.

На практике часто встречается следующая задача: привязка модели представления, хранящейся в единство -контейнер, с одним или несколькими его представлениями (экранами).

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

Контекст данных .

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

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

Другой случай связан с работой элементов списка, когда контекст уже является элементом списка, но есть необходимость использовать другой источник привязки.

Третий вариант возникает, когда одно представление работает сразу с несколькими моделями представления.

Все эти трудности так или иначе можно решить, но есть универсальный и очень простой способ их красиво решить.

Вот об этом мы и поговорим.



Инжекторы контекста Xaml

Для начала определимся с терминологией.

Каждый элементарный визуальный контроль это маленькая атомная производительность .

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

Выделим особый тип представительства – экраны , которые в той или иной форме поддерживают навигацию и зачастую являются root. Пусть будет одно хранилище Магазин , из которого по ключу извлекается требуемый экземпляр объекта.

Идея состоит в том, чтобы использовать расширение разметки xaml, чтобы предоставить возможность получать произвольный экземпляр объекта, а затем внедрять его в качестве контекста данных в любой узел визуального дерева.

Это выглядит очень просто:

  
   

<Control DataContext="{Store Key=viewModels:AppViewModel}"/>



<Control>

Теги: #XAML #.

NET #wpf #winphone #silverlight #прямые инъекции #программирование #.

NET

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.