Csharp/C#教程:WPF自定义派生控件样式分享


WPF自定义派生控件样式

我有一个从Button派生的自定义控件:

class MyControl : Button{} 

并且假设这个类是空的(没有成员)。

在应用程序的主窗口资源中,我使用的ResourceDictionary包含大多数WPF控件的样式(所谓的主题):

   

因此,窗口上的所有控件看起来都像是在该主题文件中定义的。 但是MyControl控件上的样式不受影响。 如何将MyControl看作与Button控件相同?

更新:BureauBlue.xaml中Button的样式没有键,并按以下方式定义:

   ... 

您在静态构造函数中覆盖DefaultStyleKey的元数据:

 static MyControl() { DefaultStyleKeyProperty.OverrideMetadata( typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl))); } 

然后,在您的资源中,您可以将其样式基于按钮:

  

我过去曾尝试覆盖DefaultStyleKey的元数据以指向基类(在您的情况下为Button),但它似乎不起作用。

TargetType属性不适用于从指定类型派生的类。 看到这个问题

为了完全在代码中这样做, 这个答案在另一个论坛上工作

 this.Style = new Style(GetType(), this.FindResource(typeof(System.Windows.Controls.Button)) as Style); 

检查您的BureauBlue.xaml中是否有Button的样式,如果它在那里,则从样式中删除x:key属性

我使用SetResourceReference

上述就是C#学习教程:WPF自定义派生控件样式分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 SetResourceReference(StyleProperty, typeof(Button)); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009332.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐