gpt4 book ai didi

c# - 如何使 WPF 样式可继承到派生类?

转载 作者:IT王子 更新时间:2023-10-29 04:52:23 25 4
gpt4 key购买 nike

在我们的 WPF 应用程序中,我们有一个全局样式 TargetType={x:Type ContextMenu}。我创建了一个派生自 ContextMenu 的 MyContextMenu,但现在默认样式不适用。

如何告诉 WPF 我希望 MyContextMenu 从 ContextMenu 继承默认样式?希望我可以在我的控件本身内执行此操作(通过静态 ctor 元数据覆盖或其他方式?),而不必在任何 xaml 中乱搞。

最佳答案

如果您在应用程序中定义了这样的样式:

<Style TargetType="{x:Type ContextMenu}" ...

那就是隐含的Style,不是默认的Style。默认样式通常位于与控件相同的程序集中或匹配的程序集中(即 MyAssembly.Aero.dll)。

隐式样式不会自动应用于派生类型,这可能就是您所看到的。

您可以定义第二个样式,如下所示:

<Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}" ...
<Style TargetType="{x:Type local:MyContextMenu}" BasedOn="{StaticResource {x:Type ContextMenu}}" ...

或者您可以利用控件的 Style 属性。您可以从 XAML 执行以下操作

<local:MyContextMenu Style="{DynamicResource {x:Type ContextMenu}}" ...

或者您可以像这样在 MyContextMenu 中执行此操作:

public MyContextMenu() {
this.SetResourceReference(StyleProperty, typeof(ContextMenu));
}

关于c# - 如何使 WPF 样式可继承到派生类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780605/

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