Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Будет запрошено имя ресурса (
myBrush
В результате определение кисти переместится внутрь дескриптора
WindowResources:<Window.Resources> <RadialGradientBrush x:Key="myBrush"> <GradientStop Color="#FFC44EC4" Offset="0" /> <GradientStop Color="#FF829CEB" Offset="1" /> <GradientStop Color="#FF793879" Offset="0.669" /> </RadialGradientBrush></Window.Resources>Свойство
BackgroundButton<Button Margin="25" Height="200" Width="200" Content="OK" FontSize="20" Background="{DynamicResource myBrush}"/>Мастер создания ресурсов определил новый ресурс как динамический (
Dynamic ResourceStaticResource<Button Margin="25" Height="200" Width="200" Content="OK" FontSize="20" Background="{StaticResource myBrush}"/>Чтобы оценить преимущества, модифицируйте свойство
BackgroundStaticResource<Button Margin="25" Height="200" Width="200" Content="Cancel" FontSize="20" Background="{StaticResource myBrush}"/>Расширение разметки {StaticResource}
Расширение разметки
{StaticResource}BrushNameClickButton<Button Name="Ok" Margin="25" Height="200" Width="200" Content="OK" FontSize="20" Background="{StaticResource myBrush}" Click="Ok_OnClick"/><Button Name="Cancel" Margin="25" Height="200" Width="200" Content="Cancel" FontSize="20" Background="{StaticResource myBrush}" Click="Cancel_OnClick"/>Затем поместите в обработчик события
Ok_OnClick()private void Ok_OnClick(object sender, RoutedEventArgs e){ // Получить кисть и внести изменение. var b=(RadialGradientBrush)Resources["myBrush"]; b.GradientStops[1]=new GradientStop(Colors.Black, 0.0);}На заметку! Здесь для поиска ресурса по имени используется индексатор
ResourcesTryFindResource()nullЗапустив программу и щелкнув на кнопке ОК, вы заметите,что градиенты соответствующим образом изменяются. Добавьте в обработчик события
Cancel_OnClick()private void Cancel_OnClick(object sender, RoutedEventArgs e){ // Поместить в ячейку myBrush совершенно новую кисть. Resources["myBrush"]=new SolidColorBrush(Colors.Red);}Снова запустив программу и щелкнув на кнопке Cancel, вы обнаружите, что ничего не происходит!
Расширение разметки {DynamicResource}
Для свойства также можно использовать расширение разметки
DynamicResource<Button Name="Cancel" Margin="25" Height="200" Width="200" Content="Cancel" FontSize="20" Background="{<b>DynamicResource</b> myBrush}" Click="Cancel_OnClick"/>