我有一个工具包:DataGrid(来自Codeplex)。
它开始有许多不同的风格:
所有这些都需要在一个大风格,这是唯一的方法吗?或者我可以拥有多种样式并根据需要附加它们吗?无论如何要做到这一点,以便你可以,例如代码中的交换样式?
样式:
<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}"/>
答案 0 :(得分:11)
您可能希望查看Style类的BasedOn property。基本上,它允许您从另一个继承一种风格。 'child'样式将包含来自父类的所有setter和触发器(除非它有setter覆盖父类的setter),而且它显然会有自己的setter和触发器。
也许这些信息对您有所帮助。