Работа с DataTemplates - PullRequest
       8

Работа с DataTemplates

0 голосов
/ 22 ноября 2011

Есть ли какой-то очевидный метод для работы с DataTemplates, о котором я не знаю?

Например:

У меня есть ContentControl, который будет использоваться для отображения различных представлений приложения.Насколько мне известно, для каждого элемента управления может существовать один DataTemplate на DataType.(т.е. я мог бы добавить DataTemplate к ResourceDictionary для отображения DetailsView, когда ContentControl имеет PersonViewModel, установленный в качестве его DataContext, или ListView, когда ContentControl имеет PersonManagerViewModel, установленный в качестве его DataContext).Но как мне сделать выбор между DetailsView и EditView, когда DataContext ContentControl установлен в PersonViewModel?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Несколько вариантов:

  1. При определении моделей вида «регион» всегда используйте карту 1: 1 между ViewModel и View. Это наиболее типичный подход. Если вы думаете об использовании одной и той же ViewModel для нескольких видов, вероятно, ViewModel делает слишком много. Общая логика, вероятно, принадлежит к своему собственному классу Model, который будут использовать два или более разных класса ViewModel.

  2. Определить пользовательский DataTemplateSelector для устранения неоднозначности между возможными совпадениями. Это немного уродливее, поскольку у вас больше нет волшебства «найди стандартное» поведение.

  3. Разрешить использовать только один из шаблонов по умолчанию. Key должен ссылаться на другие шаблоны определенными представлениями, которые в них нуждаются.

1 голос
/ 22 ноября 2011

Наиболее гибким решением является использование DataTemplateSelector , чтобы позволить программным путем выбрать шаблон для использования в зависимости от любых условий.

Еще одна альтернатива, котораямы использовали в нескольких местах просто использовать несколько ViewModels;в вашем случае вы могли бы иметь ReadOnlyPersonViewModel для DetailsView и MutablePersonViewModel для EditView.

...