这是我的XAML
<Grid.Resources>
<SolidColorBrush x:Key="DynamicBG"/>
</Grid.Resources>
<Label name="MyLabel" Content="Hello" Background="{DynamicResource DynamicBG} />
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题:
Q1:我现在如何在代码中将DynamicBG键值设置为红色?(当窗口加载时,我想将其设置为红色)
Q2: 这是应该如何使用动态资源吗?
谢谢
Ana*_*aev 22
要访问Resource代码,必须在文件中标识它们App.xaml:
<Application.Resources>
<SolidColorBrush x:Key="DynamicBG" />
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
XAML example
<Grid>
<Label Name="MyLabel"
Content="Hello"
Background="{DynamicResource DynamicBG}" />
<Button Content="Change color"
Width="100"
Height="30"
Click="Button_Click" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
的Resource可以在形式的代码线进行更改:
Application.Current.Resources["MyResource"] = MyNewValue;
Run Code Online (Sandbox Code Playgroud)
例:
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;
}
Run Code Online (Sandbox Code Playgroud)
原则,DynamicResources设计,所以他们可以改变.在哪里改变 - 这是开发人员的任务.在这种情况下Color,它是最常见的方法之一.有关更多信息,请参阅MSDN.
PS我建议使用App.xaml,因为有些情况下StaticResource已成功使用a ,但没有DynamicResource(资源放在其中Window.Resources).但在移动资源后App.xaml,一切都开始起作用了.
A1:您应该将"DynamicBG"移动到窗口资源,之后您可以Resources在Loaded事件处理程序中使用属性:
XAML:
<Window x:Class="MyLabelDynamicResource.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Window.Resources>
<SolidColorBrush x:Key="DynamicBG"/>
</Window.Resources>
<Grid>
<Label Name="MyLabel" Content="Hello" Background="{DynamicResource DynamicBG}" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Resources["DynamicBG"] = new SolidColorBrush(Colors.Red);
}
}
Run Code Online (Sandbox Code Playgroud)
A2:当您想在运行时更改属性时,应该使用动态资源.
| 归档时间: |
|
| 查看次数: |
42605 次 |
| 最近记录: |