gpt4 book ai didi

c# - WPF 类库中的程序集范围/根级样式

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

我有一个支持 WPF 的 C# (2008/.NET 3.5) 类库程序集(基于 this article )。
我已经创建了几个窗口,现在正尝试为创建一个通用样式集他们。但是,由于它是一个类库(而不是 WPF 应用程序),我没有 app.xaml(及其包含的应用程序和相应的 Application.Resources)来存储这些样式以供全局访问。

那么:如果我没有 app.xaml (见上文)?和/或是否可以添加一个有效的 app.xaml 到类库中?

仅供引用,我曾尝试在 ResourceDictionary.xaml 文件中创建 ResourceDictionary,并将其包含在“Window.Resources” block 内的每个窗口中。结果证明可以解决按钮等的样式问题……但不适用于封闭的窗口。我可以将 Style="{StaticResource MyWindowStyle}" 放在窗口的开始 block 中,它编译并在 VS 设计窗口中正常显示,但在实际运行时我得到一个解析异常(MyWindowStyle 无法被发现;我猜 Visual Studio 看到字典包含在有问题的行之后,但是 CRL 做事的顺序更有序,因此还没有加载 ResourceDictionary。


感谢您的想法,但仍然不行...显然类库不支持隐式使用 generic.xaml。我将 generic.xaml 添加到我的类库项目并将其构建操作设置为“资源”。它包含:

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Window}" x:Key="MyWindow">
<Setter Property="Background" Value="Black"/>
</Style>
</ResourceDictionary>

我想要使用主题的窗口 xaml 如下所示:

<Window x:Class="MyAssembly.ConfigureGenericButtons"
x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Style="{StaticResource MyWindow}"
Title="ConfigureGenericButtons">
...Buttons, etc...
</Window>

虽然 VS Design 窗口不显示使用 MyWindow 样式(即黑色背景)的窗口,但它编译良好并启动。但是,当包含此类库的应用进行导致显示此窗口的调用时,我收到 XamlParseException:

Cannot find resource named '{MyWindow}'.

我还尝试省略 Style 参数,以查看窗口是否会默认使用该样式(我尝试了包含和不包含 generic.xaml 中的 x:Key)。没有错误,但 generic.xaml 中定义的任何内容也没有显示。

我在这里做错了什么,或者关于如何允许在窗口上使用通用自定义样式的任何其他想法(即,不必在每个窗口的 xaml 中定义样式)——需要注意的是不是应用程序?

最佳答案

尝试添加

Style={DynamicResource MyStyle}

在这种情况下您不能使用 StaticResource。

关于c# - WPF 类库中的程序集范围/根级样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404019/

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