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