【问题标题】:WPF - using styles/resources from another assemblyWPF - 使用来自另一个程序集的样式/资源
【发布时间】:2012-06-03 13:59:14
【问题描述】:

我是 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”,正如其他地方所建议的那样。这使构建工作,但我失去了设计时支持,因为用户控件无法再看到样式。

有没有办法解决这个问题,或者如果失败了,是否有使用其他程序集样式的替代方法?

提前致谢

安德鲁

【问题讨论】:

    标签: wpf


    【解决方案1】:

    错误消息说明了这一点。您不能在库项目中使用“pack://application...”语法。您应该在您的 wpf 项目中执行此操作。

    【讨论】:

    • 错误告诉我库项目不能包含构建类型为“ApplicationDefinition”的文件。我可以删除 App.xaml 以消除错误,但我的问题是如何在我的用户控件库中获得设计时支持?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多