Я хочу использовать MVVM в приложении, где разными страницами являются TabItems.
Для этого я использую наблюдаемую коллекцию моих моделей представления (Items) и привязываю ее к элементу управления вкладками ItemSource.
Для каждой модели представления я создал отдельный шаблон данных, чтобы отобразить правильное представление следующим образом:
<DataTemplate DataType="{x:Type baseVm:AViewModel}">
<baseVw:AView />
</DataTemplate>
Чтобы отобразить правильное имя в заголовке вкладки, я создал другой шаблон данных, который будет применяться к каждому из элементов управления вкладкой:
<DataTemplate x:Key="ViewModelTabTemplate">
<DockPanel>
<ContentPresenter Content="{Binding Path=Name}"/>
</DockPanel>
</DataTemplate>
Элемент управления вкладками выглядит следующим образом:
<TabControl x:Name="myTabControl"
ItemsSource="{Binding Items}"
ItemTemplate="{DynamicResource ViewModelTabTemplate}">
</TabControl>
Сейчас я хочу включить / отключить вкладки в модели представления, содержащей коллекцию. Базовый класс модели представления содержит свойство зависимости IsEnabled, и я хотел бы привязать его к представлениям. Если я сделаю это прямо в представлении следующим образом:
IsEnabled="{Binding IsEnabled, FallbackValue=true}"
содержимое вкладки будет отключено, когда я установлю для свойства IsEnabled значение false. Но на самом деле я хочу также отключить вкладку страницы вкладок, а не только ее содержимое.
Спасибо за любую помощь!