<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. PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)

    前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历.中序遍历.后序遍历.具体说明如下: 前序遍 ...

  2. ___security_cookie机制

    .text:00411500 ; int __cdecl wmainCRTStartup().text:00411500 _wmainCRTStartup proc near             ...

  3. pytorch如何能够保证模型的可重复性

    问题背景是这样的: 我用了自己定义了pytorch中的模型,并且,在main函数中设置了随机种子用来保证模型初始化的参数是一致的,同时pytorch中的随机种子也能够影响dropout的作用,见链接 ...

  4. spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比 (附:遇到的坑)

    转载:https://www.cnblogs.com/yskcoder/p/4718198.html 这两天在用spring进行上传上遇到问题,今天进行了问题的排查,这个过程也增加了我看spring源 ...

  5. [LeetCode&Python] Problem 283. Move Zeroes

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...

  6. Gym - 101002K:YATP (树分治+二分+斜率优化)

    题意:给定带点权边权的树,定义路径的花费=路径边权和e+起点点权w[s]*终点点权w[t].N<2e5,e,w<1e6: 思路:首先,需要树分治. 然后得到方程dp[i]=min{ dis ...

  7. 【转】matlab的textscan与textread区别

    1.基本语法textscan的基本语法是:C = textscan(fid, 'format') C = textscan(fid, 'format', N) 其中fid为fopen命令返回的文件标识 ...

  8. xdoj-1057(Lucas定理的证明及其模板)

    Lucas定理的证明: 转自百度百科(感觉写的还不错) 首先你需要这个算式:    ,其中f > 0&& f < p,然后 (1 + x) nΞ(1 + x) sp+q Ξ ...

  9. 裴(pei)蜀定理 知识点

    在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理.裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a.b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式): ax ...

  10. Centos7下安装部署oracle数据库方法及问题汇总

    目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库 系统环境: 服务器:centos7 64位 客户端:win7 64位 注意cneto ...