wpf - 更改项目控件中选项卡项目的不透明度

标签 wpf xaml data-binding tabcontrol tabitem

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

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

此控件为每个产品显示一个选项卡,但是我希望将停产产品的选项卡设置为半透明(即将其不透明度设置为 0.2)。自动生成项目时,如何更改 tabitem 的不透明度属性。我知道我可以使用一种样式来更改所有这些,但我只想更改那些已停产的。

最佳答案

TabControl 的 ItemsContainerStyle 中,创建一个 DataTrigger,在其中绑定(bind)到您的属性(例如 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>

关于wpf - 更改项目控件中选项卡项目的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862406/

相关文章:

wpf - 创建一个具有水平拉伸(stretch)的三个相等列的网格

c# - 创建 System.Windows.Controls.Image 会引发异常 - 如何使用调度程序实例化它?

xaml - 滚动到 ScrollViewer 结尾的最佳方式

javascript - Angular 如何知道应该重新应用绑定(bind)以使用更新的数据刷新 UI 元素?

c# - 矩形不改变颜色WPF

data-binding - 绑定(bind)到链接中的 href 属性

wpf - 使用缩放变换时的边界保持比例

c# - WPF 有触摸和按住手势吗?

c# - DataGrid SortDirection 被忽略

c# - 为 Windows Phone 8.1 XAML 应用程序显示的奇怪版本