我有一个数据绑定(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/