Attualmente sto costruendo un'applicazione che consiste di diversi componenti, ognuno dei quali è essenzialmente un controllo utente WPF con un piccolo codice C# attorno al quale funziona il sistema di plugin (usando MEF) .Acessing WPF XAML Risorse da codice non WPF
Il problema che sto avendo è che ogni componente dovrebbe includere un'icona e per scopi di precisione l'ho definito come System.Windows.Media.Brush
così posso semplicemente usare il DrawingBrush
esportato da Design lì. Ora ho bisogno di accedere a quel pezzo di XAML da non WPF C#, dove ho attualmente la soluzione orribile di istanziare il controllo utente e chiedendo per la risorsa:
private Brush CachedIcon = null;
public override Brush Icon
{
get
{
if (CachedIcon == null)
{
CachedIcon = (Brush)(new BlahControl().TryFindResource("Icon"));
}
return CachedIcon;
}
}
non riuscivo a trovare un modo per leggere che risorsa (che è un file .xaml e referenziata in un ResourceDictionary
nel controllo personalizzato) da una classe "normale" C#. Qualunque cosa appartenga a WPF ha quel bel metodo TryFindResource
ma come farlo altrimenti? Non voglio avere il file XAML con l'icona che giace intorno a un-embedded.
Sembra funzionare, ma sembra un hackish veeeery. Affidarsi a nomi interni di risorse generate automaticamente non mi sembra molto consigliabile. – Joey
Ehh? Le risorse hanno nomi di stringhe, non c'è nulla che tu possa fare al riguardo! Che cosa sta cercando? – TFD
Mi stavo chiedendo quanto sia affidabile la cosa ".g.resources". Ho letto abbastanza del blog di Raymond Chen che non voglio davvero usare nulla che possa rompere perché è solo un artefatto dell'implementazione, non un comportamento documentato. – Joey