0

我应该BasedOn在这种风格中投入什么?

<Style
    x:Key="DataGrid_ColumnHeaderStyle"
    TargetType="wt:DataGridColumnHeader"
    BasedOn="??????????"> <!-- I want this to be a reference to the default style -->
    <Setter
        Property="BorderBrush"
        Value="{StaticResource Media_RaisedBorderBrush}" />
    <Setter
        Property="Background"
        Value="{StaticResource Media_RaisedBackgroundBrush}" />
    <Setter
        Property="Foreground"
        Value="{StaticResource Media_RaisedForegroundBrush}" />
</Style>

我不想覆盖整个默认样式,我只想用设置器更改少数属性。

编辑:

我知道如何使用BasedOn,我只是不知道我想要建立我的风格的风格的名称或在哪里可以找到它。默认/内置样式的名称是什么?

编辑2:

好吧,我想这毕竟不是我需要的。我是否包括在内似乎没有任何区别BasedOn="{StaticResource {x:Type wt:DataGridColumnHeader}}"。问题是仅设置BorderBrush,BackgroundForeground会导致排序箭头消失。我不明白为什么会发生这种情况,因为排序箭头是在 中定义的,ControlTemplate而我没有编辑/覆盖ControlTemplate. 我的排序箭头在哪里?(我肯定启用了排序,单击列标题确实会导致数据排序......它只是不显示箭头。)

4

2 回答 2

2

BasedOn="{StaticResource {x:Type TextBox}}"> 它将继承自默认样式(这是用于 TextBox 但它适用于每个控件)。

于 2009-10-02T11:49:58.413 回答
1

我理解它的方式不需要将 BasedOn 指定为默认样式。也许如果您设置 OverridesDefaultStyle 您将不得不这样做。我相信默认样式仍然适用,只有您在样式设置器中指定的属性会改变。

至于查找有关默认样式/模板的更多信息,一种方法是在 Blend 中打开您的项目并右键单击要查看默认模板的元素并选择“编辑模板...” ,然后选择编辑副本。

于 2009-10-02T15:08:21.970 回答