【问题标题】:Enable a TabItem via Binding通过绑定启用 TabItem
【发布时间】: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 时,标签页的内容被禁用。但我真正想要的是同时禁用标签页的标签,而不仅仅是内容。

感谢您的帮助!

【问题讨论】:

    标签: wpf binding mvvm datatemplate tabcontrol


    【解决方案1】:

    也许你可以试试这样的 -

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

    【讨论】:

    • 非常感谢!这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多