如何将多个XAML样式应用于一个元素?

Edw*_*uay 6 wpf xaml styles

我有一个工具包:DataGrid(来自Codeplex).

它开始有许多不同的风格:

  • 一个用于根据ViewModel中的变量打开和关闭它
  • 一个用于视觉造型
  • 一个用于其他一些触发器等

所有这些都需要在一个大的风格,这是唯一的方法吗?或者我可以有多种样式并根据需要附加它们吗?反正这样做是为了你可以在代码中交换样式吗?

样式:

<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>
Run Code Online (Sandbox Code Playgroud)

伪代码:

<toolkit:DataGrid 
    Style="{StaticResource CodePlexDataGridSwapper, ToolkitDataGridLayout}" 
    ItemsSource="{Binding Customers}"/>
Run Code Online (Sandbox Code Playgroud)

arc*_*aut 11

您可能希望查看Style类的BasedOn属性.基本上,它允许您从另一个继承一种风格.'child'样式将包含来自父类的所有setter和触发器(除非它有setter覆盖父类的set)并且它显然会有自己的setter和触发器.

也许这些信息对您有所帮助.