Как DataContexts передаются в UserControls внутри DataTemplates? - PullRequest
0 голосов
/ 09 января 2012

Я реализую проект с WPF-MVVM

У меня есть TabControl, где каждая вкладка представляет объект Server.На каждой вкладке есть ListBox, который привязан к списку Application.Элемент управления Tab и listbox связаны с ServerViewModel

Объект Application моделируется как UserControl, и я хочу, чтобы этот объект был связан с другой моделью представления под названием ApplicationViewModel

<TabControl x:Name="_tabControl"
 DataContext="{StaticResource ServerVM}"
 ItemsSource="{Binding UserServerCollection}">
  <TabControl.ContentTemplate>
                <DataTemplate>
                    <ListBox ItemsSource="{Binding ApplicationCollection}">
                            <DataTemplate>
                                <view:ApplicationView />
                            </DataTemplate>
                    </ListBox>
                </DataTemplate>
  </TabControl.ContentTemplate>
</TabControl>

Проблема в том, что tabcontrol хорошо связан, список имеет хорошее количество элементов, но пользовательский контроль не очень хорошо связан.

Не могли бы вы помочь мне, пожалуйста.Я не знаю, как установить userControl datacontext

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Вам необходимо сделать объект в ApplicationCollection типа ApplicationViewModel

Ваш ApplicationView наследует DataContext от ListBoxItem.DataContext, поэтому по умолчанию DataContext будет любым объектом в ApplicationCollection

0 голосов
/ 09 января 2012

Вам необязательно устанавливать DataContext, он автоматически устанавливается на шаблонный элемент посредством наследования и функциональности ListBox, предположительно, это модель представления приложения из ApplicationCollection.

Если DataContext установлен внутри ApplicationView, вам необходимо явно установить его в DataTemplate из-за приоритета . Не уверен, что DataContext="{Binding}" будет достаточно, но вы также можете попробовать относительный источник привязки к DataContext включающей ListBoxItem.

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