Per accedere alla Resource
del codice di essi deve identificare nel file App.xaml
:
<Application.Resources>
<SolidColorBrush x:Key="DynamicBG" />
</Application.Resources>
XAML example
<Grid>
<Label Name="MyLabel"
Content="Hello"
Background="{DynamicResource DynamicBG}" />
<Button Content="Change color"
Width="100"
Height="30"
Click="Button_Click" />
</Grid>
Il Resource
può essere modificato in linea codice del modulo:
Application.Current.Resources["MyResource"] = MyNewValue;
Esempio:
Code behind
// using ContentRendered event
private void Window_ContentRendered(object sender, EventArgs e)
{
SolidColorBrush MyBrush = Brushes.Aquamarine;
// Set the value
Application.Current.Resources["DynamicBG"] = MyBrush;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SolidColorBrush MyBrush = Brushes.CadetBlue;
// Set the value
Application.Current.Resources["DynamicBG"] = MyBrush;
}
Principio, DynamicResources
sono stati progettati, in modo che possono essere cambiati. Dove cambiare: è compito dello sviluppatore. Nel caso di Color
, è uno dei metodi più comuni. Vedere lo MSDN, per ulteriori informazioni.
P. S. mi consiglia di utilizzare App.xaml
, perché ci sono stati casi in cui un StaticResource
è stato usato con successo, ma non DynamicResource
(risorse vengono inseriti nella Window.Resources
). Ma dopo aver spostato la risorsa in App.xaml
, tutto ha iniziato a funzionare.
fonte
2013-07-06 12:23:12
grazie per la tua risposta informativa. –