更改项目控件中选项卡项的Opaticy

Dar*_*ren 2 data-binding wpf xaml tabcontrol tabitem

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

<TabControl ItemsSource="{Binding Products}" Name="ProductsTabControl">
  <TabControl.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Name}"/>
    </DataTemplate>
  </TabControl.ItemTemplate>
</TabControl>
Run Code Online (Sandbox Code Playgroud)

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

Fre*_*lad 5

在ItemsContainerStyle for中TabControl,创建一个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>
Run Code Online (Sandbox Code Playgroud)

更新

如果你想使已停产的标签的内容半透明,你可以做同样的事情,但在 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>
Run Code Online (Sandbox Code Playgroud)