为自定义控件创建样式资源会删除模板

时间:2015-08-25 15:01:29

标签: c# wpf

我在WPF中有一个自定义控件,它具有各种依赖属性,允许进行可视化自定义。为了简洁起见,我不会发布整个控件,但它基本上是这样设置的:

<UserControl.Resources>
    <Style TargetType="{x:Type MyControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type MyControl}">
                    <Border BorderBrush="{TemplateBinding BorderColor}">
                        // more stuff here
                        <ContentPresenter/>
                    </Border>
                </ControlTemplate>
            </Setter>
        </Setter>
    </Style>
</UserControl.Resources>

如果我直接设置它,BorderColor属性可以正常工作,如下所示:

<ctl:MyControl BorderColor="Brushes.Red">....</ctl:MyControl>

但我想在应用程序范围内设置它。我遇到的问题是如果我只是设置没有键的样式,它就不适用。像这样:

<Window.Resources>
    <Style TargetType="{x:Type ctl:MyControl}">
        <Setter Property="BorderColor" Value="Brushes.Red"/>
    </Style>
</Window.Resources>

这对控件没有任何作用。所以我想我只需设置一个密钥并应用这种风格,如下所示:

<Style TargetType="{x:type ctl:MyControl}" x:Key="myStyle">....</Style>

<ctl:MyControl Style="{StaticResource myStyle}">.....</ctl:MyControl>

但这导致控件消失,我假设是因为它删除了模板。我究竟做错了什么?使用其他框架控件,您只需设置所需的属性,而不会丢失控件模板。

1 个答案:

答案 0 :(得分:1)

您需要从已创建的默认样式继承。

inherit style from default style