<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. Webservice客户端动态调用服务端功能方法

    一.发布WebService服务 方式一:在服务端生成wsdl文件,下方客户端直接引用即可     优点:针对要发布的方法生成一个wsdl文件即可,无需多余配置.   缺点:每次服务端方法发生改变都需 ...

  2. 对ajax中数据的得到以及绑定的认识

    1.将后台得到的数据绑定到datagrid为例: 第一种是: 后台得到的数据直接绑定到datagrid上面,如下图: 这样操作的好处在于可以使界面比较简洁. 第二种是将得到的数据作为参数的形式绑定到d ...

  3. 20165228 2017-2018-2《Java程序设计》课程总结

    20165228 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 简要内容: 老师能给我在学习中提供什么帮助 我的看法 我期望的师生关系 ...

  4. arcgis server备份还原过程

    一.备份过程 1.找到已经安装的arcgis server安装目录,并找到备份工具: 2.快捷键win + R启动cmd,将备份工具文件拖入cmd窗口,enter 3. 通过backup.py脚本进行 ...

  5. Logo的制作

    <style> header { width: 1300px; height: 100px; /* background-color: pink; */ margin: 0 auto; p ...

  6. eclipse + cdt

    Window > Preferences > General > Appearance中设置主题颜色. Help > eclipse marketplace > find ...

  7. 深入浅出Node.js---Connect模块解析 。转载

    文章地址:https://blog.csdn.net/zhangyuan19880606/article/details/51509205 1 Connect模块背景 Node.js的愿望是成为一个能 ...

  8. diskcache

    DiskCache: Disk Backed Cache DiskCache is an Apache2 licensed disk and file backed cache library, wr ...

  9. msyql开启慢查询以及分析慢查询

    慢查询的用途是用来发现执行时间长的查询语句,以便对这些语句进行优化 [mysqld] #在这里面增加,其它地方无效 #server-id=1 #log-bin=master-bin slow_quer ...

  10. 编写一个函数 reverse_string(char * string)实现:将参数字符串中的字符反向排列 。(递归实现)

    要求:不能使用C函数库中的字符串操作函数. 思路:在递归函数的调用时,先应该定义一个指针型char字符串.函数内部应先调用自己,在打印,这样才能保证字符串是从最后一个开始输出. #include< ...