me gustaría acceder programáticamente recursos estáticos tanto como lo haría en XAML:Programatically acceder a un recurso estático Silverlight
<TextBlock Text="{Binding Source={StaticResource My.Text.Key}}" />
Esto funciona si mi recurso estático se define en el TextBlock, algún elemento de los padres (por ejemplo, control de usuario) o incluso la aplicación. Parece que la expresión de enlace StaticResource sabe cómo recorrer el árbol de elementos o el elemento en sí. Me gustaría hacer lo mismo mediante programación:
<UserControl x:Class="MyCustomControl" ...>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml"/> <!-- Sets 'My.Text.Key' to System.String 'Hello, World!' -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
</UserControl>
public partial class MyCustomControl
{
public MyCustomControl()
{
InitializeComponent();
string myCustomValue = this.Resources[MyCustomValue] as string; // myCustomValue becomes null!
}
}
Incluso en esta sencilla prueba, parece que no puede tener acceso mediante programación a mi recurso. Y esta es la versión simplificada de lo que estaba tratando de hacer realmente: encontrar un recurso estático a través de un elemento al que tengo una propiedad dinámica personalizada asociada (por ejemplo, uiElement.Resources [key]).
Cuando eliminé los "puntos" de mi clave (por ejemplo, "MyTestKey" en lugar de "My.Test.Key", pude comenzar a ver mis recursos de forma programática. ¿Existe una regla sobre el nombramiento de recursos en XAML o código? -detrás? – Trinition