나는 또한 그들에 대해 혼란 스러웠다. 아래 예를 참조하십시오.
<Window x:Class="WpfApplicationWPF.CommandsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CommandsWindow" Height="300" Width="300">
<StackPanel>
<Button Name="ButtonNew"
Click="ButtonNew_Click"
Background="{DynamicResource PinkBrush}">NEW</Button>
<Image Name="ImageNew"
Source="pack://application:,,,/images/winter.jpg"></Image>
</StackPanel>
<Window.Background>
<DynamicResource ResourceKey="PinkBrush"></DynamicResource>
</Window.Background>
</Window>
여기에서는 버튼과 창에 동적 리소스를 사용했으며 어디에서나 선언하지 않았습니다. 런타임에 계층의 ResourceDictionary가 확인됩니다.이를 정의하지 않았으므로 기본값이 사용됩니다.
버튼의 이벤트를 클릭하기 위해 아래 코드를 추가하면 DynamicResource를 사용하기 때문에 배경이 그에 따라 업데이트됩니다.
private void ButtonNew_Click(object sender, RoutedEventArgs e)
{
this.Resources.Add( "PinkBrush"
,new SolidColorBrush(SystemColors.DesktopColor)
);
}
그들이 StaticResource를 사용한 경우 :
- 리소스는 XAML로 선언해야합니다.
- 그리고 "이전"도 사용됩니다.
혼동이 사라지기를 바랍니다.