主要项目之外的MergedDictionaries

时间:2012-10-19 18:30:21

标签: xaml windows-runtime winrt-xaml

我有一个包含2个项目的解决方案。首先是主要应用程序,第二个是控件。在Generic.xaml中,在Silverlight项目中,可以执行

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/MyLibNamespace;component/Themes/SomeFolder/MyControl.xaml" />
</ResourceDictionary.MergedDictionaries>

这似乎不适用于Windows应用商店应用程序类库。 ReSharper想要文件路径为“/Themes/SomeFolder/MyControl.xaml”,但我仍然得到一个XamlParseException:无法分配给属性'Windows.UI.Xaml.ResourceDictionary.Source'。 [行:7位置:36]

3 个答案:

答案 0 :(得分:3)

在WinRT中没有“其他类/程序集中的Xaml文件”这样的东西。换句话说:“EmbeddedResource”或“Resource”根本不存在于WinRT组件中(是的,这是一种痛苦)。这也是将\ Themes \ Generic.xaml复制到输出目录中的原因。)

答案 1 :(得分:1)

请参阅回答here on msdn

如果你有一个名为“CustomControl”的dll,其ResourceDictionary名为“Styles.xaml”,那么App.xaml应该包含

  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ms-appx:///CustomControls/Styles.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

答案 2 :(得分:0)

如果将ResourceDictionary 来源设置为UserControl的XAML,则可以重现相同的行为。但是,如果引用的XAML文件是专用的ResourceDictionary,则在 ms-appx之后使用 ms-appx:/// 方案访问内部样式没有问题: /// PROJECT_NAME / PATH_TO_XAML.xaml 模式。

ResourceDictionary是否有可能与UserControl分开,如果是这样的话?