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

发布于 2024-10-15 06:26:54 字数 435 浏览 3 评论 0原文

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

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

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

I have a data bound tab control:

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

This control is showing one tab per product, however I would like to make the tabs of discontinued products semi-transparent (i.e. set their opacity to 0.2). How can I change the opacity property of the tabitem when the item is being auto generated. I know I could use a style to change them all, but I only want to change those which are discontinued.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷心人i 2024-10-22 06:26:54

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>

In ItemsContainerStyle for TabControl, create a DataTrigger where you bind to your property (e.g IsDiscontinued) and set the Opacity from there

<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>

Update

If you want to make the Content of the discontinued tabs semi-transparent you can do the same thing, but in the 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文