Actualmente estoy construyendo una aplicación que consta de varios componentes, cada uno de los cuales es esencialmente un control de usuario WPF con un pequeño código C# para que el sistema de complemento funcione (usando MEF) .Acessing WPF XAML Resources from non-WPF code
El problema que tengo es que cada componente debe incluir un icono y para fines de simpatía lo definí como System.Windows.Media.Brush
, así que puedo usar el DrawingBrush
exportado desde Diseño allí. Ahora necesito acceder a ese pedazo de XAML de la no-WPF C#, donde actualmente tengo la solución horrible de la instancia del control de usuario y pidiendo que para el recurso:
private Brush CachedIcon = null;
public override Brush Icon
{
get
{
if (CachedIcon == null)
{
CachedIcon = (Brush)(new BlahControl().TryFindResource("Icon"));
}
return CachedIcon;
}
}
no pude encontrar una manera de leer que recurso (que es un archivo .xaml, y se hace referencia en un ResourceDictionary
en el control personalizado) de una clase C# "normal". Todo lo que pertenece a WPF tiene ese buen método TryFindResource
, pero ¿cómo hacerlo? No quiero tener el archivo XAML con el ícono sin incrustar.
Parece que funciona, pero parece muy cutre. Depender de los nombres internos de los recursos generados automáticamente no me parece muy recomendable. – Joey
Ehh? Los recursos tienen nombres de cadenas, ¡no hay nada que puedas hacer al respecto! ¿Qué estás buscando? – TFD
Me preguntaba qué tan confiable será la cosa ".g.resources". He leído lo suficiente sobre el blog de Raymond Chen que realmente no quiero usar nada que pueda romperse porque es solo un artefacto de la implementación, un comportamiento no documentado. – Joey