我创建了几个窗口,现在尝试为它们创建一个共同的样式集。然而,由于它是一个类库(而不是WPF应用程序),我没有一个 app.xaml(和它所包含的 Application 和相应的 Application.Resources)来存储这些样式以供全局访问。 因此: 如何创建一个顶级的样式定义集,使所有 xaml 文件都能看到(考虑到我没有 app.xaml,请参见上文)? 或者是否可以向类库中添加一个可用的 app.xaml?
FYI, 我尝试在 ResourceDictionary.xaml 文件中创建一个 ResourceDictionary,并将其包含在每个窗口中的 "Window.Resources" 块中。这解决了按钮等控件的样式问题...但对于包含的窗口却不行。我可以在窗口的开头块中放置
Style="{StaticResource MyWindowStyle}"
,它可以编译并在 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设计窗口不显示使用MyWindow样式的窗口(即黑色背景),但编译正常并启动。但是,当包含此类库的应用程序调用导致此窗口显示的调用时,我会收到XamlParseException:
我还尝试省略Style参数,以查看窗口是否默认使用该样式(我尝试了在通用.xaml中包含和不包含x:Key)。没有错误,但是在generic.xaml中定义的任何内容也没有显示出来。找不到名为"{MyWindow}"的资源。
我在这里做错了吗,或者有哪些其他想法可以允许在Window上使用常见的自定义样式(即不必在每个Window的xaml中定义样式)--但是需要注意,这不是一个应用程序?
/themes/generic.xaml
的?这是一个标准吗? - DLeh/themes/generic.xml
是一个标准。请参见 http://msdn.microsoft.com/en-us/library/system.windows.themeinfoattribute - Cameron MacFarland