WPF 单击按钮改变内容

在WPF中对于资源的使用有两个运行状态,分别是Static(静态)和Dynamic(动态)这两种状态,静态资源使用(StaticResource)指的是在程序中载入内存时对资源的一次性使用,之后就不会再去访问这个资源了,动态资源使用(DynamicResource)使用指的是在程序运行过程中仍然会再去访问这个资源。
当然了我们平时使用静态资源(StaticResource)就可以了,不过如果叫进行特殊操作的话比如点击按钮改变内容,这种时候就要使用我们的这个(DynamicResource)动态资源了,因为动态资源是在程序运行过程中还是会继续访问这个资源的。

下面是实例:

<Window x:Class="WpfApplication1.Window1"
        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:WpfApplication1"
        mc:Ignorable="d"
        Title="Window1" Height="300" Width="300" FontSize="20">
    <Window.Resources>
        <TextBlock x:Key="str1" Text="测试一"></TextBlock>
        <TextBlock x:Key="str2" Text="测试二"></TextBlock>
    </Window.Resources>
    <StackPanel>
        <Button Margin="5" Content="{StaticResource str1}"></Button>
        <Button Margin="5" Content="{DynamicResource str2}"></Button>
        <Button Margin="5" Content="修改" Click="Button_Click"></Button>
    </StackPanel>
</Window>

前端代码很简单的资源要将调用的静态资源改为动态资源就可以了,页面上的第三个按钮负责在程序运行过程中点击按钮对两个资源进行改变。

下面是按钮后台代码

private void Button_Click(object sender, RoutedEventArgs e)
 {
        this.Resources["str1"] = new TextBlock() { Text = "你好,世界" };
        this.Resources["str2"] = new TextBlock() { Text = "世界,你好" };
 }

单击前:
WPF 单击按钮改变内容_第1张图片
单击后:
WPF 单击按钮改变内容_第2张图片
因为第一个按钮是以静态方式使用资源,所以点击修改了不会改变内容。

你可能感兴趣的:(WPF)