WPF:基于单独程序集中的另一个样式的样式

发布于 2024-07-16 02:32:17 字数 633 浏览 9 评论 0原文

程序集 A - ResourceDictionary 包含 StyleA 样式。
程序集 B - ResourceDictionary.MergedDictionaries 将资源从程序集 A 合并到 B 中。

我想在“基于”StyleA 的程序集 B 中创建一个样式。 是否可以?

我正在尝试创建这种样式:

<Style x:Key="StyleB" BasedOn="{StaticResource StyleA}">
   <Setter Property="Button.Foreground" Value="Khaki"/>
</Style>

但如果我使用 StyleB,我会在运行时收到 XamlParseException 异常:

无法将属性“Style”中的值转换为类型为“的对象”系统.Windows.样式'。 只能基于目标类型为基本类型“IFrameworkInputElement”的样式。 标记文件“SamSeekApp;component/mainwindow.xaml”中的对象“System.Windows.Controls.Button”出错

Assembly A - ResourceDictionary contains StyleA style.
Assembly B - ResourceDictionary.MergedDictionaries to merge resources from Assembly A into B.

I would like to create a style in Assembly B "based on" StyleA. Is it possible?

I am trying to create this style:

<Style x:Key="StyleB" BasedOn="{StaticResource StyleA}">
   <Setter Property="Button.Foreground" Value="Khaki"/>
</Style>

But I get a XamlParseException exception at run-time, if I use StyleB:

Cannot convert the value in attribute 'Style' to object of type 'System.Windows.Style'. Can only base on a Style with target type that is base type 'IFrameworkInputElement'. Error at object 'System.Windows.Controls.Button' in markup file 'SamSeekApp;component/mainwindow.xaml'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃素的狼 2024-07-23 02:32:17

尝试将 TargetType="{x:Type Button}" 添加到“StyleB”中。

Try adding TargetType="{x:Type Button}" to your 'StyleB'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文