Подтвердить что ты не робот

Включить TabItem посредством привязки

Я хочу использовать 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. Но я действительно хочу также отключить вкладку вкладки, а не только контент.

Спасибо за любую помощь!

4b9b3361

Ответ 1

Возможно, вы могли бы попробовать что-то вроде этого -

<TabControl>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
             <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>        
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>