MVVM Tabcontrol изменить вкладку - PullRequest
0 голосов
/ 28 мая 2009

Я разрабатываю приложение mvvm с wpf. Только что добавлено требование, чтобы запретить пользователю изменять вкладки, если в текстовом поле есть текст.

Каков наилучший способ сделать это полностью в модели представления? Я не знаю, как заблокировать tabitem, потому что в tabcontrol нет команды dependencyobject, с которой нужно связываться, мне нужно развернуть свой собственный tabcontrol и построить ICommand вокруг события SelectionChanged?

Должен ли я просто (например, не говорить) поместить код в код позади представления в событии SelectionChanged?

Есть ли у меня альтернатива, о которой я не думал?

1 Ответ

5 голосов
/ 29 мая 2009

Вы можете рассмотреть возможность привязки каждого свойства TabItems IsEnabled к свойству в вашей ViewModel (например, ViewModel.TabsEnabled) и установить для этого свойства значение False, когда текстовое поле содержит текст. Таким образом, вы сможете включать / отключать эти вкладки из вашей ViewModel, не имея кода для файла для этого конкретного представления.

Это означает, что у вас будет что-то похожее на следующее (если ваша ViewModel является статическим классом с именем ViewModel):

<TabItem IsEnabled="{Binding Source={x:Static local:ViewModel.TabsEnabled}}"/>

Тогда вам просто нужно установить свойство TabsEnabled в ViewModel, когда у одного из текстовых полей есть содержимое; Есть несколько способов сделать это, но если они привязаны к вашей ViewModel, у вас должно быть много возможностей для прослушивания изменений и установки TabsEnabled в зависимости от ситуации.

...