В предыдущая часть мы познакомились с расширениями привязки и разобрались, как их использовать на практике, например, для локализации.
Сегодня мы продолжим изучать возможности библиотеки.
Аэрофреймворк и рассмотрим довольно интересную тему о внедрении контекста данных в xaml - разметка представлений, а заодно применить знания из предыдущей статьи.
На практике часто встречается следующая задача: привязка модели представления, хранящейся в единство -контейнер, с одним или несколькими его представлениями (экранами).
Обычно такая привязка происходит в скрытом коде, в результате чего свойству представления присваивается нужное значение.
Контекст данных .
Во многих случаях это работает хорошо, но с этим подходом связаны определенные нюансы и сложности.
Например, они касаются контекстных меню и других всплывающих анимаций, поскольку они не включены в визуальное дерево и, следовательно, недоступны для основного контекста данных.
Другой случай связан с работой элементов списка, когда контекст уже является элементом списка, но есть необходимость использовать другой источник привязки.
Третий вариант возникает, когда одно представление работает сразу с несколькими моделями представления.
Все эти трудности так или иначе можно решить, но есть универсальный и очень простой способ их красиво решить.
Вот об этом мы и поговорим.
Для начала определимся с терминологией.
Каждый элементарный визуальный контроль это маленькая атомная производительность .
Сложные сложные представления строятся на основе простых, образуя древовидную структуру ( визуальное дерево ), где каждый узел также является представлением вплоть до корня.
Выделим особый тип представительства – экраны , которые в той или иной форме поддерживают навигацию и зачастую являются root. Пусть будет одно хранилище Магазин , из которого по ключу извлекается требуемый экземпляр объекта.
Идея состоит в том, чтобы использовать расширение разметки xaml, чтобы предоставить возможность получать произвольный экземпляр объекта, а затем внедрять его в качестве контекста данных в любой узел визуального дерева.
Это выглядит очень просто:
<Control DataContext="{Store Key=viewModels:AppViewModel}"/>
<Control>
Теги: #XAML #.
NET #wpf #winphone #silverlight #прямые инъекции #программирование #.
NET
-
Обзор Портативного Компьютера Asus M70Sa
19 Oct, 24 -
Все О Страховании Ноутбуков
19 Oct, 24 -
Тело, Которое Работает Программистом
19 Oct, 24 -
Ipod И Док-Станция В Стиле Стимпанк
19 Oct, 24 -
Дядя, Дай Мне Десять Копеек!
19 Oct, 24 -
Data Ontap 8.3 Adp: Flashpool Storagepools
19 Oct, 24