我是 WPF 的新手,并且努力使用单独程序集中的样式。这就是我正在做的事情:-
我有一个带有 \Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了 \Themes 中子文件夹中的许多 xaml 文件:-
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Metro\CoreStyles.xaml" />
... etc ...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
我的解决方案还有一个 WPF 应用程序项目,在这里 App.xaml 合并了我的库项目中的资源,如下所示:-
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyThemeLibrary;component/Themes/generic.xaml"/>
... etc...
到目前为止的标准东西。
最后,我还有第三个项目——一个 WPF 用户控件库。这些控件使用这些常用样式,通常带有"Style={StaticResource SomeStyle}"
. 我可以运行应用程序,一切看起来都很好,但问题是我在编写用户控件时没有获得设计时支持 - 设计表面基本上是空的。
另一篇 SO 文章建议将 App.xaml 添加到用户控件库项目中,并如上所述合并资源。这可行,我得到了设计时支持,但是在尝试构建解决方案时出现错误:
Library project file cannot specify ApplicationDefinition element.
我已尝试将 App.xaml 构建操作从“ApplicationDefinition”更改为“Page”,正如其他地方所建议的那样。这使构建工作,但我失去了设计时支持,因为用户控件不再能看到样式。
有没有办法解决这个问题,或者失败了,使用另一个程序集的样式的替代方法?
提前致谢
安德鲁