Совместное использование состояния между ViewModels - PullRequest
3 голосов
/ 21 июля 2009

У меня есть две модели представления, которые представляют одну и ту же модель для разных представлений. Один представляет модель как элемент в ListBox, другой представляет ее как вкладку в TabControl. TabControl - отображение вкладок для элементов, выбранных в ListBox, так что вкладки приходят и уходят при изменении выбора.

Я могу легко синхронизировать два элемента управления, добавив свойство IsSelected к Модели и привязав к нему ViewModels (немного похоже на this ), но это загромождает Модель деталями представления, там действительно не место.

Кажется, мне нужно что-то между Model и ViewModels, чтобы удерживать это дополнительное состояние. Есть ли примеры или примеры хороших способов сделать это?

Ответы [ 2 ]

9 голосов
/ 21 июля 2009

Использование ViewModel.

У вас есть вид, который содержит два элемента управления. Имейте модель представления, которая будет содержать список ViewModels для элемента управления ListBox для привязки. Также в рамках этой модели представления связать выбор списка со вторым списком моделей представления, с которыми затем связывается TabControl.

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

1 голос
/ 22 июля 2009

TabControl - это ItemsControl, поэтому не стесняйтесь связывать его ItemsSource с ListBox.SelectedITems.

Очевидно, что ViewModel для списка должен иметь свойство, которое будет производить ViewModel для вкладок:

public TabViewModel ItemTabModel { get { ... } }

И поскольку TabControl немного забавен, вам нужно добавить ItemContainerStyle, чтобы заполнить Content для TabControlItem, поскольку обычный ItemTemplate для TableControl влияет только на заголовки для вкладок.

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