Aby uzyskać dostęp do Resource
kodu musi identyfikować je w pliku 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>
Resource
można zmienić w linii kodu w postaci:
Application.Current.Resources["MyResource"] = MyNewValue;
Przykład:
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;
}
zasadzie DynamicResources
zostały zaprojektowane, dzięki czemu mogą one zostać zmienione. Gdzie zmienić - to zadanie dewelopera. W przypadku Color
jest to jedna z najpopularniejszych metod. Aby uzyskać więcej informacji, patrz MSDN.
P. S. polecam korzystania App.xaml
, ponieważ zdarzały się przypadki, gdy StaticResource
zostały wykorzystane z powodzeniem, ale nie DynamicResource
(zasoby są umieszczane w Window.Resources
). Ale po przeniesieniu zasobu w App.xaml
wszystko zaczęło działać.
dziękuję za odpowiedź informacyjną. –