/ / Как да импортирате един ResourceDictionary в друг, в WPF? - c #, .net, wpf, xaml, resourcedictionary

Как да импортирате един ResourceDictionary в друг, във WPF? - c #, .net, wpf, xaml, resourcedictionary

Възможно ли е да добавите един ресурсен речник в друг? Благодаря за всяка помощ.

Отговори:

19 за отговор № 1

В Dictionary2.xaml дефинирайте MergedDictionaries (веднага след отварящия маркер ResourceDictionary):

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

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

Решението е a SharedResourceDictionary, Изпълнението в урока трябва да бъдесчитано като отправна точка и вероятно ще се нуждае от известно ниво на променяне - в зависимост от сценария на използване. Google "wpf SharedResourceDictionary" за някои придобивания и решения.

От отговора до този въпрос от XAMeLi


4 за отговор № 2

Фрагмент, направо от проекта за скиц поток, върху който работя, показва как да се слеят ресурсни речници в 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>

Това показва обединяването на два допълнителни ресурсни речника в друг ресурсен речник.

(Имайте предвид, че поръчката може да стане важна, ако сте поставили по подразбиране стилове, определени на повече от едно място, тъй като те ще се отменят)


1 за отговор № 3

Нещо като:

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

Може да бъде това, което търсите. Използваме кода като този в модулите Prism.


0 за отговор № 4

Без повече контекст е трудно да ви дам конкретен отговор. Ето някои евентуално подходящи ресурси за сливане на ресурсни речници:

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