How to import one ResourceDictionary into other, i

2020-05-30 06:55发布

Is it possible to add one resource dictionary into other one? Thanks for any help.

3条回答
一夜七次
2楼-- · 2020-05-30 07:10

A snippet straight from a sketchflow project I am working on that shows how to merge resource dictionaries in xaml:

<Application.Resources>
    <!-- Resources scoped at the Application level should be defined here. -->
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Microsoft.Expression.Prototyping.SketchControls;component/ScrollViewerStyles.xaml"/>
            <ResourceDictionary Source="/[ProjectABC];component/[fileXYZ].xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

This shows merging two additional resource dictionaries into another resource dictionary.

(Note that the order can become important if you have default styles defined in more than one place as they will override each other)

查看更多
兄弟一词,经得起流年.
3楼-- · 2020-05-30 07:19

Something like:

ResourceDictionary resources = new ResourceDictionary();
resources.Source = new Uri("/MyModule;component/MyModule.xaml", 
     UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries.Add(resources);

Might be what you're looking for. We use code like this in our Prism Modules.

查看更多
甜甜的少女心
4楼-- · 2020-05-30 07:29

In Dictionary2.xaml define MergedDictionaries (right after the opening ResourceDictionary tag):

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Path/to/Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>

there's a catch: each time you merge dictionaries you effectively create a copy of the merged dictionary. And it's recursive - if you have Dict3.xaml and Dict4.xaml that both load Dictionary2.xaml, you will have three instances of Dictionary1.xaml created

The solution is a SharedResourceDictionary. The implementation in the tutorial should be seen as a starting point and will probably need some level of tweaking - depending on use scenario. Google "wpf SharedResourceDictionary" for some gotchas and solutions.

From answer to this question by XAMeLi

查看更多
登录 后发表回答