我有一个从Button派生的自定义控件:
class MyControl : Button{}假设这个类是空的(没有成员)。
在应用程序的主窗口资源中,我使用了包含大多数WPF控件(所谓的主题)样式的ResourceDictionary:
<ResourceDictionary Source="BureauBlue.xaml" />因此,窗口上的所有控件看起来都像是在该主题文件中定义的。但样式在MyControl控件上不受影响。我怎样才能让MyControl看起来像一个按钮控件?
更新: BureauBlue.xaml中的按钮样式没有键,定义方式如下:
<Style TargetType="{x:Type Button}" BasedOn="{x:Null}"> ...</Style>发布于 2009-11-13 23:50:21
在静态构造函数中覆盖DefaultStyleKey的元数据:
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(
typeof(MyControl),
new FrameworkPropertyMetadata(typeof(MyControl)));
}然后,在您的资源中,您可以将其样式基于按钮:
<Style TargetType="{x:Type lcl:MyControl}" BasedOn="{StaticResource {x:Type Button}}" />我过去曾尝试覆盖DefaultStyleKey的元数据以指向基类(在本例中为Button),但似乎不起作用。
发布于 2009-11-13 23:48:35
TargetType属性不适用于从指定类型派生的类。请参阅this question
发布于 2016-04-01 19:14:14
SetResourceReference(StyleProperty, typeof(Button));https://stackoverflow.com/questions/1729161
复制相似问题