2009-05-27 117 views
6

我有一個工具包:DataGrid(來自Codeplex)。如何將多個XAML樣式應用於一個元素?

它開始有許多不同的樣式:

  • 一個用於接通和關斷它基於用於視覺樣式
  • 一個用於一些其他觸發器等的視圖模型
  • 一個可變

做所有這些都需要在一大風格,這是唯一的方法嗎?或者我可以有多種款式並附加他們,因爲我需要他們?無論如何要做到這一點,以便您可以交換風格代碼

樣式:

<Style x:Key="CodePlexDataGridSwapper" TargetType="toolkit:DataGrid"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding WhichGrid}" Value="Infragistics"> 
      <Setter Property="toolkit:DataGrid.Visibility" Value="Collapsed"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

<Style x:Key="ToolkitDataGridLayout" TargetType="toolkit:DataGrid"> 
    <Setter Property="Background" Value="Yellow"/> 
</Style> 

僞代碼:

<toolkit:DataGrid 
    Style="{StaticResource CodePlexDataGridSwapper, ToolkitDataGridLayout}" 
    ItemsSource="{Binding Customers}"/> 

回答

11

你可能想看看Style類的BasedOn property。基本上,它可以讓你繼承另一種風格。 '孩子'風格將包含所有父類的引發器和觸發器(除非它的引用者覆蓋了父類的引用),並且顯然會有自己的引用和觸發器。

也許這個信息對您有幫助。

+1

+1因爲它有點幫助,但它仍然不能幫助應用/合併兩個以上的獨立樣式集合。不幸的是,除了基於簡單的半繼承之外,很可能沒有辦法應用它們中的「很多」。 – quetzalcoatl 2013-04-06 13:46:13

相關問題