MVVM с неявными шаблонами данных - получение представления явно - PullRequest
0 голосов
/ 06 июня 2011

Я использую неявные DataTemplates из Silverlight 5 для соединения ViewModel и View.

В моем MainView есть TabControl (от Telerik), который связан с ObservableCollection MainViewModel. И для всех возможных типов ViewModel в этой Коллекции существует DataTemplate, который определяет соответствующий View (= Tab).

Очень чистый и полностью отделенный.

Но теперь мне нужно написать код, который действительно имеет отношение только к представлениям: я хочу вручную объединить ленту выбранной вкладки с лентой основного вида. Модели представления не имеют никакого представления об их соответствующем представлении и ничего не знают об элементе пользовательского интерфейса, таком как лента (что хорошо). Так что это один из очень редких случаев, когда мне нужно написать код позади.

Я пробовал событие SelectionChanged в TabControl, но все свойства (SelectedItem, SelectedValue, ...) указывают на модель представления, а не на представление.

Как получить представление - которое было подключено Silverlight 5 с использованием DataTemplate ??

Спасибо за любые идеи!

1 Ответ

0 голосов
/ 06 июня 2011

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

Одной хорошей реализацией с MVVM-Light является класс Messenger, см. Эту статью для получения информации.

http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

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

...