Изменить Opaticy элемента Tab в элементе управления - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть элемент управления с привязкой к данным:

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

Этот элемент управления отображает одну вкладку на продукт, однако я хотел бы сделать вкладки снятых с производства продуктов полупрозрачными (т.е. установить их непрозрачность равной 0,2).Как я могу изменить свойство непрозрачности tabitem, когда элемент генерируется автоматически.Я знаю, что могу использовать стиль, чтобы изменить их все, но я хочу изменить только те, которые больше не поддерживаются.

1 Ответ

5 голосов
/ 01 февраля 2011

В ItemsContainerStyle для 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>

Обновление

Если вы хотите сделать содержимое закрытых вкладок полупрозрачным, вы можете сделать то же самое, но в 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>
...