通过绑定启用 TabItem

Posted

技术标签:

【中文标题】通过绑定启用 TabItem【英文标题】:Enable a TabItem via Binding 【发布时间】:2012-03-06 16:15:17 【问题描述】:

我想在不同页面是 TabItems 的应用程序中使用 MVVM。

为此,我使用我的视图模型(项目)的可观察集合并将其绑定到选项卡控件 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 时,标签页的内容被禁用。但我真正想要的是同时禁用标签页的标签,而不仅仅是内容。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

也许你可以试试这样的 -

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

【讨论】:

非常感谢!这正是我想要的。

以上是关于通过绑定启用 TabItem的主要内容,如果未能解决你的问题,请参考以下文章

如何启用SSL安全证书

Spring Cloud Stream 绑定可视化

如何启用程序集绑定日志记录?

powershell 启用或禁用网络绑定(即禁用IPv4或启用IPv6)

如何在 RxSwift 中将 UISwitch 绑定到 UIButton 启用?

Android Studio 正确编译项目,Gradlew 没有启用数据绑定