How to import one ResourceDictionary into other, in WPF?

18,710

Solution 1

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

Solution 2

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)

Solution 3

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.

Share:
18,710

Related videos on Youtube

snstuff
Author by

snstuff

Updated on June 18, 2022

Comments

  • snstuff
    snstuff almost 2 years

    Is it possible to add one resource dictionary into other one?