Включить элемент tabitem через привязку


Я хочу использовать в MVVM приложения, где разные страницы TabItems.

Для этого я использую наблюдаемую коллекцию моделей моего представления (элементов) и привязываю ее к элементу tabcontrols ItemSource.

Для каждой модели представления я создал индивидуальный шаблон данных для отображения правильного представления следующим образом:

<DataTemplate DataType="{x:Type baseVm:AViewModel}">
  <baseVw:AView /> 
</DataTemplate>

Чтобы отобразить правильное имя в заголовке вкладки, я создал другой шаблон данных, который будет применяться к каждому элементу элемента управления tab:

<DataTemplate x:Key="ViewModelTabTemplate">
  <DockPanel>
    <ContentPresenter Content="{Binding Path=Name}"/>
  </DockPanel>
</DataTemplate>

Элемент управления tab выглядит так:

<TabControl x:Name="myTabControl" 
            ItemsSource="{Binding Items}" 
            ItemTemplate="{DynamicResource ViewModelTabTemplate}">
</TabControl>

Теперь я хочу включить / отключить вкладки в модели представления, содержащей коллекцию. Базовый класс модели представления содержит свойство зависимости IsEnabled, и я хотел бы привязать его к представлениям. Если я делаю это прямо в представлении, как это:

IsEnabled="{Binding IsEnabled, FallbackValue=true}"

Содержимое вкладки отключается, когда я перевожу свойство IsEnabled в false. Но то, что я действительно хочу, это также отключить вкладку tabpage, а не только содержание.

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

1 10

1 ответ:

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

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