c# .net wpf xaml resourcedictionary

resourcedictionary c#



¿Cómo importar un ResourceDictionary a otro, en WPF? (4)

¿Es posible agregar un diccionario de recursos a otro? Gracias por cualquier ayuda.


Algo como:

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

Podría ser lo que estás buscando. Usamos código como este en nuestros módulos de prisma.


En Dictionary2.xaml defina MergedDictionaries (justo después de abrir la etiqueta ResourceDictionary):

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

Hay un problema: cada vez que fusionas diccionarios, creas efectivamente una copia del diccionario combinado. Y es recursivo: si tiene Dict3.xaml y Dict4.xaml que cargan Dictionary2.xaml, tendrá tres instancias de Dictionary1.xaml creadas.

La solución es un SharedResourceDictionary . La implementación en el tutorial debe verse como un punto de partida y probablemente necesitará algún nivel de ajuste, dependiendo del escenario de uso. Google "wpf SharedResourceDictionary" para algunos errores y soluciones.

De la respuesta a esta pregunta por XAMeLi



Un fragmento de un proyecto de sketchflow en el que estoy trabajando muestra cómo combinar diccionarios de recursos en 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>

Esto muestra la fusión de dos diccionarios de recursos adicionales en otro diccionario de recursos.

(Tenga en cuenta que el orden puede ser importante si tiene estilos predeterminados definidos en más de un lugar, ya que se anularán)