He creado una pequeña clase de ayuda con un único método para hacer la búsqueda inversa que necesita.
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;
}
}
se le puede llamar utilizando la siguiente
string name = ResourceHelper.FindNameFromResource(this.Resources, defaultStyle);
Cada FrameworkElement
tiene su propio diccionario .Resources
, el uso de 'esto' supone que estás en el lugar adecuado para el que se define MyTestStyle. Si es necesario, podría agregar más métodos a la clase estática para recorrer recursivamente todos los diccionarios en una ventana (¿aplicación?)
o si sólo tiene que empezar desde algún FrameworkElement y trabajar en amplitud a través de lo visual árbol. – user7116