[英]WPF Change Thickness object in Resource and assign in code behind
我在Window的资源集合中定义了一个“厚度”资源,该资源在所有方面都设置为值10。 我在那个窗口中有3个按钮。
单击第三个按钮后,我将获取该资源的值,将其更改(200个,所有边),然后将其静态应用到第一个按钮,然后将其动态应用到第二个按钮,但仍然为按钮选择旧值(10),即动态使用它。 对于Buttton静态使用它,它应该获取旧值(10),但我认为只是因为第二个按钮是动态获取它,它将反映更改(200)。
<Window x:Class="WpfApplicationUnleashed.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:WpfApplicationUnleashed"
Title="Window1" >
<Window.Resources>
<Thickness x:Key="BadiThickness">10</Thickness>
</Window.Resources>
<StackPanel>
<Button x:Name="cmdStatic" HorizontalAlignment="Center" >
I am Static
</Button
<Button x:Name="cmdDynamic" HorizontalAlignment="Center" >
I am Dynamic
</Button>
<Button x:Name="cmdChanger" HorizontalAlignment="Center" Click="cmdChanger_Click">
I am Changer
</Button>
</StackPanel>
</Window>
码:
private void cmdChanger_Click(object sender, RoutedEventArgs e)
{
Thickness th = (Thickness)this.FindResource("BadiThickness");
th.Bottom = 200;
th.Top = 200;
th.Left = 200;
th.Right = 200;
cmdDynamic.SetResourceReference(Button.MarginProperty, "BadiThickness");
cmdStatic.Margin = (Thickness)this.FindResource("BadiThickness");
}
您确实意识到Thickness
是一种值类型,这就是为什么当您更改它的值时,它将不会在资源中受到影响。
您可以执行以下操作来设置该资源的值:
this.Resource["BadiThickness"] = new Thickness(200);
另外,请避免在资源名称中使用北印度语。 这可能会误导。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.