2

データ バインドされたタブ コントロールがあります。

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

このコントロールは製品ごとに 1 つのタブを表示していますが、廃止された製品のタブを半透明にしたいと思います (つまり、不透明度を 0.2 に設定します)。項目が自動生成されているときに、tabitem の opacity プロパティを変更するにはどうすればよいですか。スタイルを使用してすべてを変更できることはわかっていますが、廃止されたものだけを変更したいと考えています。

4

1 に答える 1

5

ItemsContainerStyle forTabControlで、プロパティにバインドする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>
于 2011-02-01T12:21:18.943 に答える