<Window x:Class="RescourceDemo1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Icon="/RescourceDemo1;component/image/test.png">
<Window.Resources>
<TextBlock x:Key="res1" Text="海上生明月"/>
<TextBlock x:Key="res2" Text="海上生明月"/>
</Window.Resources>
<Grid>
<Button x:Name="btnStatic" Content="{StaticResource res1}" Height="23" HorizontalAlignment="Left" Margin="211,70,0,0" VerticalAlignment="Top" Width="75" />
<Button x:Name="btnDynamic" Content="{DynamicResource res2}" Height="23" HorizontalAlignment="Left" Margin="211,113,0,0" VerticalAlignment="Top" Width="75" />
<Button Content="Update" Height="23" HorizontalAlignment="Left" Margin="212,162,0,0" Name="button3" VerticalAlignment="Top" Width="75" Click="button3_Click" />
<Label Content="静态资源:" Height="28" HorizontalAlignment="Left" Margin="144,69,0,0" Name="label1" VerticalAlignment="Top" />
<Label Content="动态资源:" Height="28" HorizontalAlignment="Left" Margin="144,108,0,0" Name="label2" VerticalAlignment="Top" /> <Image Height="135" Source="image/test.png" HorizontalAlignment="Left" Margin="328,50,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="150" />
</Grid>
</Window>
using System.Windows;
using System.Windows.Controls; namespace RescourceDemo1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void button3_Click(object sender, RoutedEventArgs e)
{
//静态资源一旦使用,则不变
var res1 = this.btnStatic.Content as TextBlock;
var res2 = this.btnDynamic.Content as TextBlock; if (res1.Text.Equals("海上生明月")) this.Resources["res1"] = new TextBlock() { Text = "天涯共此时" };
else this.Resources["res1"] = new TextBlock() { Text = "海上生明月" }; //动态资源设置后,扔可能改变
if (res2.Text.Equals("海上生明月")) this.Resources["res2"] = new TextBlock() { Text = "天涯共此时" };
else this.Resources["res2"] = new TextBlock() { Text = "海上生明月" };
}
}
}

注意:静态资源不可改变,动态资源可动态更改! <Window.Resources>,为窗体级资源。

属性资源==》

<Window x:Class="资源1.MainWindow"
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"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<sys:String x:Key="str">
我是资源——资源为属性元素
</sys:String>
</ResourceDictionary>
</Window.Resources>
<Grid x:Name="grid">
<TextBlock x:Name="textblock" Text="{StaticResource ResourceKey=str}"/>
</Grid> </Window>
<!--
在上面代码中资源为属性元素,所以<ResourceDictionary>是可以省略掉的,下面是在后台的等效代码:
this.Resources["str1"] = "我是资源";
this.textblock.Text = this.FindResource("str1") as string;
-->

静态、动态资源(资源为属性元素)==》

<Window x:Class="资源2.MainWindow"
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"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<sys:String x:Key="DynamicRes">动态资源</sys:String>
<sys:String x:Key="StaticRes">静态资源</sys:String>
</Window.Resources>
<StackPanel>
<TextBox x:Name="txt1" Text="{DynamicResource ResourceKey=DynamicRes}" Margin="10"/>
<TextBox x:Name="txt2" Text="{StaticResource ResourceKey=StaticRes}" Margin="10"/>
<Button x:Name="btn" Content="资源类型区分" Click="btn_Click_1" Height="25" Margin="5"/>
</StackPanel>
</Window>
using System.Windows;

namespace 资源2
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void btn_Click_1(object sender, RoutedEventArgs e)
{
this.Resources["StaticRes"] += "静态资源发生";
this.Resources["DynamicRes"] += "改变";
}
}
}

窗体级、文件级、应用程序级、对象级资源==》

项目结构:

App.xml==》

<Application x:Class="资源3.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<SolidColorBrush Color="Gold" x:Key="myGoldBrush" />
</Application.Resources>
</Application> 文件资源==》
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="myWhiteBrush" Color="White" />
</ResourceDictionary>

用法如下:

<Window x:Class="资源3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<!--窗体级资源-->
<!--<SolidColorBrush x:Key="myRedBrush" Color="Red" />--> <ResourceDictionary>
<SolidColorBrush x:Key="myRedBrush" Color="Red" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!--文件级资源-->
<!--<ResourceDictionary x:Key="aa" Source="Dictionary1.xaml"/>-->
</Window.Resources> <StackPanel>
<!--窗体级资源-->
<Button Margin="5" Background="{StaticResource myRedBrush}">窗体级资源Button</Button>
<!--应用程序级资源-->
<Button Margin="5" Background="{StaticResource myGoldBrush}">应用程序级资源Button</Button>
<!--文件级资源-->
<Button Margin="5" Background="{StaticResource myWhiteBrush}">文件级资源Button</Button>
<!--对象级资源-->
<Button Margin="5">
<Button.Resources>
<SolidColorBrush x:Key="myGreenBrush" Color="Green" />
</Button.Resources>
<Button.Content>
<TextBlock Text="Sample Text" Background="{StaticResource myGreenBrush}" />
</Button.Content>
</Button>
</StackPanel>
</Window>

实例二:

App.xaml

<Application x:Class="资源4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<!-- 应用程序级资源 -->
<SolidColorBrush Color="Gold" x:Key="myGoldBrush" />
<SolidColorBrush Color="Blue" x:Key="myBrush" />
</Application.Resources>
</Application> MainWindow.xaml <Window x:Class="资源4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<!-- 窗体级资源 -->
<SolidColorBrush Color="White" x:Key="myWhiteBrush" />
<SolidColorBrush Color="Green" x:Key="myBrush" />
</Window.Resources>
<StackPanel>
<!-- 使用应用程序级定义的资源 -->
<Button Margin="5" Content="使用应用程序级定义的资源" Background="{StaticResource myGoldBrush}" />
<!-- 使用窗体级定义的资源 -->
<Button Margin="5" Content="使用窗体级定义的资源" Background="{StaticResource myWhiteBrush}" />
<!-- 窗体级资源的值覆盖应用程序级资源的值 -->
<Button Margin="5" Content="窗体级资源的值覆盖应用程序级资源的值" Background="{StaticResource myBrush}" />
<StackPanel Background="#FF999999">
<StackPanel.Resources>
<!-- 对象级资源 -->
<SolidColorBrush Color="Yellow" x:Key="myYellowBrush" />
<SolidColorBrush Color="Red" x:Key="myBrush" />
</StackPanel.Resources>
<!-- 使用应用程序级定义的资源 -->
<Button Margin="5" Content="使用应用程序级定义的资源" Background="{StaticResource myGoldBrush}" />
<!-- 使用窗体级定义的资源 -->
<Button Margin="5" Content="使用窗体级定义的资源" Background="{StaticResource myWhiteBrush}" />
<!-- 使用对象级定义的资源 -->
<Button Margin="5" Content="使用窗体级定义的资源" Background="{StaticResource myYellowBrush}" />
<!-- 使用对象级定义的资源覆盖窗体级、应用程序级定义的资源 -->
<Button Margin="5" Content="使用对象级定义的资源覆盖窗体级、应用程序级定义的资源" Background="{StaticResource myBrush}" />
</StackPanel>
</StackPanel>
</Window>

WPF Demo16 资源的更多相关文章

  1. WPF之资源字典zz

    最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...

  2. WPF 之 资源(Resource)

    1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. ...

  3. WPF 中资源路径的问题

    WPF 中资源路径的问题 1. 引用当前工程的资源(注意xxxx.png的build action 应设置为Resource 或Embedded Resource) <ImageBrush Im ...

  4. WPF样式资源文件简单运用

    WPF通过资源来保存一些可以被重复利用的样式,下面的示例展示了简单的资源样式文件的使用: 一.xaml中定义资源及简单的引用 <Window.Resources > <!--wpf窗 ...

  5. WPF 访问资源中的Storyboard

    原文:WPF 访问资源中的Storyboard <UserControl.Resources> <Storyboard x:Key="testStoryboard" ...

  6. WPF学习资源整理

    WPF(WindowsPresentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的编程模型 ...

  7. WPF 调用资源图片

    原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...

  8. WPF - 资源收集

    原文:WPF - 资源收集 OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅.此篇文章将不断更新,感兴趣的可以看看,也欢 ...

  9. WPF 为资源字典 添加事件响应的后台类

    原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...

随机推荐

  1. Jaxb如何优雅的处理CData

    前言   Jaxb确实是xml和java对象映射互转的一大利器. 但是在处理CData内容块的时候, 还是有些小坑. 结合网上搜索的资料, 本文提供了一种解决的思路, 看看能否优雅地解决CData产出 ...

  2. Python之路,第十一篇:Python入门与基础11

    python3  函数2 全局变量:一直存在 局部变量:函数执行时存在,执行完毕后销毁: lambda 表达式(又称匿名函数表达式) 作用: 创建一个匿名(无名)函数对象, 同 def 类似但不提供函 ...

  3. ldd 查看程序依赖库

    ldd 查看程序依赖库 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ldd.html

  4. MAC使用mysql报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    遇到这种错误,需要重置密码. Step1:停止mysql,命令如下: $ sudo service mysql stop 或者是 $ sudo /usr/local/mysql/support-fil ...

  5. 自我复制的3D打印机

    RepRap 是人类历史上第一部可以自我复制型的机器. https://reprap.org/wiki/RepRap RepRap 是一部可以生成塑料实物的免费桌面型 3D 打印机.由于 RepRap ...

  6. MySQL安装配置错误\日常使用错误

    1.出现报错---应用程序无法正常启动0xc000007b 安装direct 9.0 安装vc++ 2005 安装vc++ 2008 安装vc++ 2012(x64和x86都要装) 安装 .NET4. ...

  7. numpy.array

    关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要 ...

  8. 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结

    往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...

  9. oracle完全之dbf文件出现问题, ORA-01219

    alter database datafile '/data/app/oradata/ora237/users01.dbf' offline drop; 强制删除该故障文件

  10. 来自工厂的 PCB 封装建议

    来自工厂的 PCB 封装建议 以前一直没有注意,现在终于知道了,PCB 的封装方向角度是不可以乱摆的,要根据实际编带情况画. 以实物的编带为参考确定 PCB 封装的画法. 而且编带都有标准. 强烈建议 ...