如何将样式基于默认控件的样式?

Mar*_*eIV 4 wpf inheritance subclass basedon

我们正在编写TextBox的自定义子类,我们只需要更改该样式的一些基本部分.现在我们知道你何时进行子类化Control,通常你应该像这样更改元数据......

public class EnhancedTextBox : TextBox
{
    static EnhancedTextBox()
    {
        // Commenting this line out lets this use the default TextBox style.
        DefaultStyleKeyProperty.OverrideMetadata(
            typeof(EnhancedTextBox),
            new FrameworkPropertyMetadata(typeof(EnhancedTextBox)));
    }
}
Run Code Online (Sandbox Code Playgroud)

这会将用于该子类类型的键更改为类型本身,这意味着它不再获取默认的TextBox样式.没什么大不了的...我们只是评论该行,它再次起作用,因为键仍然设置为TextBox直接使用的值.

但是,我们想知道我们是否确实想要改变风格中的一些东西,而不是整个风格,我们可以简单地创建一个新的风格并设置它的BasedOn属性......但是我们在那里设置了什么?我们不想手动拔出XAML并创建一个新的样式,给它一个键,然后使用StaticResource,但我们还没有找到我们可以在那里设置说'这是基于TextBox样式.

我希望它简单,但我们还没有找到它.有人可以帮忙吗?

Mar*_*eIV 5

就像那样......我找到了它.男人,踢我自己,这是显而易见的,我错过了!

<Style TargetType="{x:Type local:EnhancedTextBox}"
    BasedOn="{StaticResource {x:Type TextBox}}">

   ....

</Style>
Run Code Online (Sandbox Code Playgroud)

在这里找到它...基于当前的WPF风格