Использование DataTemplate DataType WPF

90
13

Я установил DataContext для UserControls следующим образом:


<uc:DepartmentListingView DataContext="{Binding ., Mode=TwoWay}" />

На основе пример проекта Джоша Смита Я пытаюсь выполнить то же самое с DataTemplate и DataType:


<!-- Template applies a DepartmentListingView to an instance of the DepartmentSelectionViewModel class. -->
<DataTemplate DataType="{x:Type model:DepartmentSelectionViewModel}">
<uc:DepartmentListingView />
</DataTemplate>

Это хорошо работает, но, конечно, есть проблема; Я думаю, что это может возникнуть в результате попыток установить более одного представления (UserControl) в одну и ту же модель представления (?). В приведенном ниже коде я теперь сопоставляю один и тот же viewModel сверху с другим представлением в том же окне.


<DataTemplate DataType="{x:Type model:DepartmentSelectionViewModel}">
<uc:ListSubjectHeaderView />
</DataTemplate>

Первое представление подключено так же, как и когда я устанавливал DataContext явно, но последнее представление не имеет привязки, хотя в консоли также нет очевидной ошибки DataBinding.


Итак, будет ли проблема с использованием метода DataType/DataTemplate таким образом?


Спасибо,

Berryl

спросил(а) 2021-01-25T17:15:28+03:00 5 месяцев назад
1
Решение
132

В идеале вы будете иметь отношение "один к одному" между view и viewmodel.


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

Таким образом, только создание правильной модели просмотра приведет к правильной таблице данных и, следовательно, usercontrol

ответил(а) 2021-01-25T17:15:28+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема