gpt4 book ai didi

c# - WPF 自定义派生控件样式

转载 作者:太空狗 更新时间:2023-10-29 17:32:22 29 4
gpt4 key购买 nike

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

    class MyControl : Button{}

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

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

    <ResourceDictionary Source="BureauBlue.xaml" />

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

更新:BureauBlue.xaml中Button的样式没有key,定义如下:

    <Style TargetType="{x:Type Button}" BasedOn="{x:Null}"> ...</Style>

最佳答案

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

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

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

<Style TargetType="{x:Type lcl:MyControl}" BasedOn="{StaticResource {x:Type Button}}" />

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

关于c# - WPF 自定义派生控件样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1729161/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com