【发布时间】:2017-09-28 18:12:33
【问题描述】:
我的自定义控件的默认样式在 Generic.xaml 中定义并且工作正常。
但是,当我尝试以与使用内置控件相同的方式更改自定义控件的样式时,没有任何反应。在 App.xaml 中,我尝试通过执行以下操作来更改控件的默认样式:
<Style TargetType="{x:Type my:CustomControl}">
<Setter Property="Background" Value="Red"/>
</Style>
如果我设置上述样式的 x:key 属性并使用此键引用此样式,则一切正常。
上述样式方法仅适用于内置控件而不适用于自定义控件是否正确,或者我只是做错了什么?是否有可行的解决方案来实现自定义控件的这种样式?
更新 在这种情况下,我的自定义控件派生自 System.Windows.Window。
【问题讨论】:
-
您是在静态构造函数中设置 DefaultStyleKeyProperty.OverrideMetadata 还是在做一些解决方法?
-
“上面的样式方法只对内置控件有效,对自定义控件无效……对吗?”不,那不是真的。你可能在声明你的控制权时做错了什么。你也应该证明这一点。
-
继 Clemens cmets 之后,我尝试在一个新项目中复制我的案例。创建从 TextBox 继承的自定义控件时,隐式样式可以正常工作。但是,当使用完全相同的设置并且只是将控件更改为从 Window 继承(这是我最初的问题)时,隐式样式不起作用。当使用 Window 作为基类而不是其他控件时,隐式样式是否存在一些问题?
标签: wpf xaml styles custom-controls