Несколько DataContext в представлении против MVVM? Это правильно? - PullRequest
0 голосов
/ 28 июня 2011

У меня следующая проблема: я создаю приложение WPF для чата, в котором я хочу, чтобы пользователь был подключен к GTalk с разными учетными записями; я сделал ViewModel (благодаря StackOverflow, который решил мне некоторые проблемы сегодня утром в предыдущем вопросе ...), который позволяет обрабатывать сообщения, но я не знаю, какой из них является лучшим способом обработки DataContext. Я думаю, что нужны разные DataContexts для каждого экземпляра соединения, но я не знаю, является ли это правильным способом, и не знаю, как определить несколько DataContexts в представлении. Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 28 июня 2011

A DataContext предоставляет источник привязки по умолчанию для элемента в представлении. Он наследуется от родителя к ребенку в визуальном дереве. Вы можете изменить DataContext для любого элемента, связав его с некоторым свойством его родителя DataContext. Это распространенный способ создания «островков», связанных с моделью дочернего представления.

Например, если у вас есть модель представления пользователя, которая имеет свойство Address, вы можете отобразить ее в AddressUserControl следующим образом:

<StackPanel>
   ... elements bound to properties of User ...

   <AddressUserControl DataContext="{Binding Address}"/>
</StackPanel>
0 голосов
/ 28 июня 2011

Если у вас переменное количество учетных записей, вы можете использовать ItemsControl.

Грубая идея, лежащая в основе этого: вы можете привязать ItemsControl к списку «Sub-ViewModels» в вашей основной ViewModel и определитьDataTemplate (= представление) для каждого из них.DataContext каждого DataTemplate автоматически назначается соответствующему элементу в списке ViewModel.

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