我在Window的资源集合中定义了一个Thickness资源,它在所有方面都设置为值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");
}
答案 0 :(得分:3)
您确实意识到Thickness
是一种值类型,这就是为什么当您更改它的值时,它不会在资源中受到影响。
您可以采取以下措施来设置该资源的值:
this.Resource["BadiThickness"] = new Thickness(200);
另外,请避免在资源名称中使用印地语。这可能会误导。