要访问Resource
代码必须在文件中识别它们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
可以在以下形式的代码行中更改:
Application.Current.Resources["MyResource"] = MyNewValue;
例子:
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;
}
原则,DynamicResources
被设计,所以他们可以改变。在哪里改变 - 这是开发人员的任务。在 的情况下Color
,它是最常用的方法之一。有关详细信息,请参阅MSDN。
PS 我推荐使用App.xaml
,因为曾经有StaticResource
成功使用 a 的情况,但没有成功使用DynamicResource
(资源放在 中Window.Resources
)。但是在将资源移入之后App.xaml
,一切都开始起作用了。