Вопрос по wpf, xaml, .net, c# – Как импортировать один ResourceDictionary в другой, в WPF?

20

Можно ли добавить один словарь ресурсов в другой? Спасибо за любую помощь.

Ваш Ответ

4   ответа
20

ющего тега ResourceDictionary):

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

есть подвох: каждый раз, когда вы объединяете словари, вы фактически создаете копию объединенного словаря. И это рекурсивно - если у вас есть Dict3.xaml и Dict4.xaml, которые оба загружают Dictionary2.xaml, у вас будет три экземпляра Dictionary1.xaml, созданных

Решением является SharedResourceDictionary. Реализация в руководстве должна рассматриваться как отправная точка и, возможно, потребует некоторой настройки - в зависимости от сценария использования. Google "wpf SharedResourceDictionary" для некоторых ошибок и решений.

От ответа наэтот вопро по XAMeLi

1

Что-то типа

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

Может быть, то, что вы ищете. Мы используем такой код в наших модулях Prism.

4

над которым я работаю, который показывает, как объединить словари ресурсов в 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>

Это показывает объединение двух дополнительных словарей ресурсов в другой словарь ресурсов.

(Обратите внимание, что порядок может стать важным, если у вас есть стили по умолчанию, определенные в нескольких местах, так как они будут перекрывать друг друга)

0

возможно, соответствующие ресурсы по слиянию словарей ресурсов:

http: //msdn.microsoft.com/en-us/library/aa350178.asp

Похожие вопросы