2009-05-27 80 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

相关问题