2011-02-01 37 views
2

我有一個數據綁定標籤控制:標籤項目在一個項目的變更Opaticy控制

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

這種控制是表示每個產品一個突片,但是我想使停產產品半透明的突出部(即將其不透明度設置爲0.2)。如何在項目被自動生成時更改tabitem的不透明屬性。我知道我可以使用一種風格來改變它們,但我只想改變那些停止使用的風格。

回答

5

在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> 
+0

完美的作品。感謝您的詳細解答。我沒有意識到風格在與項目相同的數據上下文中被「執行」! – Darren 2011-02-02 11:03:21