Я хочу использовать MVVM в приложении, где разные страницы являются TabItems.
Для этого я использую наблюдаемую коллекцию моделей просмотра (Items) и привязываю ее к элементу ItemsSource tabcontrols.
Для каждой модели представления я создал отдельный шаблон данных для отображения правильного вида следующим образом:
<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. Но я действительно хочу также отключить вкладку вкладки, а не только контент.
Спасибо за любую помощь!