Ho creato una piccola classe di supporto con un singolo metodo per eseguire la ricerca inversa richiesta.
public static class ResourceHelper
{
static public string FindNameFromResource(ResourceDictionary dictionary, object resourceItem)
{
foreach (object key in dictionary.Keys)
{
if (dictionary[key] == resourceItem)
{
return key.ToString();
}
}
return null;
}
}
si può chiamare usando il seguente
string name = ResourceHelper.FindNameFromResource(this.Resources, defaultStyle);
Ogni FrameworkElement
ha il proprio dizionario .Resources
, usando 'questo' presuppone che sei nel posto giusto per cui è definito MyTestStyle. Se necessario, puoi aggiungere più metodi alla classe statica per scorrere tutti i dizionari in una finestra (applicazione?)
O semplicemente farlo iniziare da qualche FrameworkElement e lavorare in ampiezza attraverso il visivo albero. – user7116