使用外部装配的样式,这是另一种解决方案

时间:2016-12-09 17:30:54

标签: c# wpf

我有一个解决方案:
Image
在这个解决方案中,我有一个我想在另一个项目中使用的样式,样式是资源字典格式。 注意:此解决方案包含WPF类库。

另一个解决方案中,我有一个项目,解决方案资源管理器如下所示:
Image

现在,我想在我的App.xaml中引用CustomWindow.xaml资源字典,所以我可以在我的MainWindow.xaml中使用它。

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="???"/>
    <ResourceDictionary.MergedDictionaries>
<ResourceDictionary>

怎么做?

解决方案是:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/CustomWindow;component/Styles/CustomWindow.xaml"/>
    <ResourceDictionary.MergedDictionaries>
<ResourceDictionary>

现在,每当我从这个DLL中将样式添加到我的窗口时,就像这样:

Style="{DynamicResource CustomWindowStyle}"

它在代码上显示了摇摆的线条,每当我在其上放置光标时,它都会显示错误:“对象引用未设置为对象的实例”
注意:它会编译,但设计师不会拍摄它的真实外观。

1 个答案:

答案 0 :(得分:0)

使用包URI https://msdn.microsoft.com/en-us/library/aa970069(v=vs.110).aspx。在你的情况下,它应该像

<ResourceDictionary>
   <ResourceDictionary.MergedDictionaries>
       <ResourceDictionary Source="pack://application:,,,/<assembly name>;component/Styles/CustomWindow.xaml"/>
   <ResourceDictionary.MergedDictionaries>

如果要共享资源,可能需要将资源移动到另一个程序集。