0
点赞
收藏
分享

微信扫一扫

6.WPF 静态资源和动态资源

奔跑的酆 2022-04-01 阅读 59
wpf

静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了。

动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源。

<Window x:Class="_22WPF静态资源与动态资源.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_22WPF静态资源与动态资源"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <Button x:Name="UpdateControl"  Margin="10"  Content="点击更新" Click="UpdateControl_Click"></Button>
            <Button BorderThickness="5" x:Name="button1" Content="测试1" Height="40"  Margin="10" BorderBrush="{StaticResource SolidColor}"></Button>
            <Button BorderThickness="5"  x:Name="button2" Content="测试1" Height="40"  Margin="10" BorderBrush="{DynamicResource SolidColor}"></Button>
        </StackPanel>
    </Grid>
</Window>

后端代码

using System.Windows;
using System.Windows.Media;

namespace _22WPF静态资源与动态资源
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void UpdateControl_Click(object sender, RoutedEventArgs e)
        {
            //动态改变资源的样式
            this.Resources["SolidColor"] = new SolidColorBrush(Colors.Black);
            //动态获取样式的详细信息
            var solidColor = App.Current.FindResource("SolidColor");
            var defaultButtonStyle = App.Current.FindResource("DefaultButtonStyle");
        }
    }
}

样式

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <SolidColorBrush x:Key="SolidColor" Color="Red"></SolidColorBrush>
    <Style x:Key="DefaultButtonStyle" TargetType="Button">
        <Setter Property="Foreground" Value="Blue"></Setter>
        <Setter Property="FontSize" Value="15"></Setter>
    </Style>
</ResourceDictionary>

 点击更新之后

静态资源的样式不会进行样式修改,动态的可以

 

举报

相关推荐

0 条评论