sco*_*obi 10 wpf resourcedictionary
考虑一个文件| WPF应用程序的新项目,包含:
从Generic.xaml中取出生成的样式并将其移动到Dictionary2.然后将Dictionary2合并为Dictionary1,将Dictionary1合并为Generic,如下所示:
<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)
然后,将CustomControl1的实例添加到MainWindow的网格中.(这部分是重现问题所必需的.项目总是很好编译 - 只有在运行时才能显示问题,并且必须引用字典.)
在Dictionary1.xaml中,我在同一个文件夹中的另一个dict中合并,因此一个简单的Source ="Dictionary2.xaml"可以工作.但在Generic.xaml中,我必须使用绝对URI.如果我在没有pack://应用程序的东西的情况下将上面的内容更改为Source ="Dictionary1.xaml",那么我会在尝试构造MainWindow时遇到由IOException引起的XamlParseException"无法找到资源'dictionary1.xaml'".
我的问题: 关于相对URI解析的generic.xaml有什么特别之处,为什么?
Lu5*_*u55 10
对不起,因为我没有能力写评论,所以我发布这个作为答案.
我有同样的情况,一切都适合我.我不需要在Generic.xaml的路径中放入"pack:// application".但只有当程序集的输出类型是"Windows应用程序"时.对于"类库",我需要将程序集名称添加到路径(Source="/ClassLibarayAssemblyName;component/Themes/Dictionary1.xaml"
),因为没有它,WPF引擎会尝试在应用程序的主程序集中查找Dictionary1.xaml.
两种情况下的目标框架是".NET Framework 4 Client Profile"