6

我有一个工具包: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>

伪代码:

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

1 回答 1

11

您可能想查看 Style 类的BasedOn 属性。基本上,它允许您从另一种风格继承一种风格。'child' 样式将拥有来自父级的所有设置器和触发器(除非它的设置器覆盖父级的设置器),而且它显然有自己的设置器和触发器。

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

于 2009-05-27T17:45:37.717 回答