如何在多个资源字典中使用公共资源

时间:2017-07-13 13:34:38

标签: uwp uwp-xaml

我有一些常见的资源,比如我想在多个资源词典中使用的Brushes,Converers等:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Themes/Common.xaml" />
            <ResourceDictionary Source="/Themes/CustomStyles1.xaml" />
            <ResourceDictionary Source="/Themes/CustomStyles2.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

除非我将Common.xaml添加到CustomStyle1.xaml中的MergedDictionaries,否则无法识别使用StaticResourceThemeResource标记扩展的CustomStyle1.xaml中Common.xaml引用的资源:

<!-- CustomStyles1.xaml -->
<ResourceDictionary
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Themes/Common.xaml" />
    </ResourceDictionary.MergedDictionaries>

但是,每次将其添加到MergedDictionaries时都会加载Common.xaml,并且资源会多次实例化。

1 个答案:

答案 0 :(得分:0)

关键点是您引用Common.xamlCustomSyle1.xaml词典的原因。

你有三个字典,更好的方法是每个字典包含不同的资源,并且它们之间没有依赖关系。因此,当您在页面中使用其中一个或两个时,将它们合并到页面资源中,并且可以使用所有合并的资源。

如果您确实希望引用Common.xamlCustomSyle1.xaml,假设您需要在一个页面中使用Common.xaml以及CustomStyle1.xaml,则只需要合并由于CustomStyle1.xaml已合并到Common.xaml,因此页面资源为CustomSyle1.xaml。在这种情况下,您将不会有多个实例化的谜题。