【问题标题】:Change Opaticy of Tab Item In an Items Control在 Itemscontrol 中更改选项卡项的不透明度
【发布时间】:2011-06-19 05:51:18
【问题描述】:

我有一个数据绑定选项卡控件:

<TabControl ItemsSource="{Binding Products}" Name="ProductsTabControl">
  <TabControl.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Name}"/>
    </DataTemplate>
  </TabControl.ItemTemplate>
</TabControl>

此控件为每个产品显示一个标签,但我想让已停产产品的标签半透明(即将它们的不透明度设置为 0.2)。自动生成项目时如何更改 tabitem 的 opacity 属性。我知道我可以用一种风格来改变它们,但我只想改变那些已经停产的。

【问题讨论】:

    标签: wpf xaml data-binding tabcontrol tabitem


    【解决方案1】:

    TabControl 的 ItemsContainerStyle 中,创建一个绑定到属性的 DataTrigger(例如 IsDiscontinued)并从那里设置不透明度

    <TabControl ItemsSource="{Binding Products}" Name="ProductsTabControl">
        <TabControl.ItemContainerStyle>
            <Style TargetType="TabItem">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsDiscontinued}" Value="True">
                        <Setter Property="Opacity" Value="0.2"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TabControl.ItemContainerStyle>
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>
    

    更新

    如果你想让已停产标签的内容半透明,你可以做同样的事情,但在DataTemplate

    <TabControl ItemsSource="{Binding Products}" Name="ProductsTabControl">
        <TabControl.Resources>
            <DataTemplate DataType="{x:Type local:Product}">
                <Border Name="bg" BorderBrush="Black" BorderThickness="1">
                    <TextBlock Text="{Binding Name}"/>
                </Border>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding IsDiscontinued}" Value="True">
                        <Setter TargetName="bg" Property="Opacity" Value="0.2"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </TabControl.Resources>
        <!--...-->
    </TabControl>
    

    【讨论】:

    • 效果很好。感谢您的详细回答。我没有意识到样式是在与项目相同的数据上下文中“执行”的!
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2015-12-16
    • 2011-12-21
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多