在WPF中为DataGridColumnHeader创建自定义样式时,我对“BasedOn”使用了什么?

时间:2009-10-02 01:51:17

标签: wpf xaml wpftoolkit styles

我应该以这种风格为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>

我不想覆盖整个默认样式,我只想用setter更改一些属性。

修改

我知道如何使用BasedOn,我只是不知道我试图根据我的风格或在哪里找到它的风格的名称。什么是默认/内置样式的名称

编辑2:

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

2 个答案:

答案 0 :(得分:2)

BasedOn =“{StaticResource {x:Type TextBox}}”&gt;它将继承默认样式(这适用于TextBox,但它适用于每个控件)。

答案 1 :(得分:1)

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

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