Я определил один ресурс Thickness в коллекции ресурсов Window, для которого установлено значение 10 по всем сторонам.У меня есть 3 кнопки в этом окне.
После нажатия третьей кнопки я извлекаю значение этого ресурса, меняю его (200, все ребра) и применяю его статически для первой кнопки и динамически для второй, но все же он забирает старое значение (10) для кнопки, которая использует его динамически.Для Баттона, использующего его статически, предполагалось получить старое значение (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");
}