mi piacerebbe accedere programatically risorse statiche quanto mi sarebbe in XAML:Programatically accedere a una risorsa di Silverlight statico
<TextBlock Text="{Binding Source={StaticResource My.Text.Key}}" />
Questo funziona se la mia risorsa statica è definita sulla TextBlock, qualche elemento padre (ad esempio UserControl) o anche l'applicazione. Sembra che l'espressione di legame StaticResource sappia come risalire all'albero degli elementi, o l'elemento stesso. Mi piacerebbe fare la stessa cosa a livello di programmazione:
<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!
}
}
Anche in questo semplice test, la mia risorsa non riesco a cui accedere programatically. E questa è la versione semplificata di ciò che stavo cercando di fare davvero: trovare una risorsa statica tramite un elemento a cui è associata una proprietà dinamica personalizzata (ad es. UiElement.Resources [chiave]).
Quando ho tolto i "punti" dalla mia chiave (ad esempio "MyTestKey" anziché "My.Test.Key", potrei iniziare a vedere le mie risorse in modo programmatico. Esiste una regola sulla denominazione delle risorse in XAML o codice -behind? – Trinition