当前位置: 首页 > news >正文

WPF 资源、引用命名空间格式、FrameworkElement、Binding、数据绑定

资源

  1. 对象级别
  2. 独立文件

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

动态资源使用(DynamicResource)使用指的是在程序运行过程中仍然会去访问资源。
显然,如果你确定某些资源只在程序初始化的时候使用一次、之后不会再改变,就应该使用StaticResource,而程序运行过程中还有可能改变的资源应该以DynamicResource形式使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

》》》对象级别
在这里插入图片描述
在这里插入图片描述
》》》取消绑定
BindingOperations.ClearBinding(this.控件, ContentControl.ContentProperty);

<Window x:Class="WpfApp1.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:WpfApp1"mc:Ignorable="d"      xmlns:sys="clr-namespace:System;assembly=mscorlib"Title="Window1" Height="450" Width="800"><Window.Resources><sys:String x:Key="st">xxx</sys:String></Window.Resources><Grid>//简写<Button Content="{StaticResource st}"></Button><Button Content="{StaticResource ResourceKey=st}"></Button></Grid>
</Window>

在这里插入图片描述

》》》对立文件,资源字典

在这里插入图片描述

<ResourceDictionary 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"><sys:String x:Key="str">字符</sys:String><sys:Double x:Key="dbl">3.1415926</sys:Double>
</ResourceDictionary>

在这里插入图片描述

<Window x:Class="WpfApp1.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:WpfApp1"mc:Ignorable="d"      xmlns:sys="clr-namespace:System;assembly=mscorlib"Title="Window1" Height="450" Width="800"><Window.Resources>//这个可以放在app.xaml  全局生效<ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="ZEN_Resource.xaml"></ResourceDictionary></ResourceDictionary.MergedDictionaries></ResourceDictionary></Window.Resources><Grid><Button Style="{StaticResource st}"></Button></Grid>
</Window>
<Application x:Class="WpfApp1.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfApp1"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="ZEN_Resource.xaml"></ResourceDictionary></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>

》》Resources.resx
在这里插入图片描述
》》》》》》》》 XAML定义了一个扩展标记x:Static来引用静态属性或字段。如:Content=“{x:Static SomeClass:SomeStaticProp}”。通常可以在C#代码中定义静态字段,然后在XAML中进行访问。但是一定要在XAML中引用该类

<Window x:Class="WpfApp1.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:WpfApp1"mc:Ignorable="d"      xmlns:sys="clr-namespace:System;assembly=mscorlib"xmlns:prop="clr-namespace:WpfApp1.Properties"Title="Window1" Height="450" Width="800"><Window.Resources></Window.Resources><Grid><Button Content="{x:Static prop:Resources.Info }"></Button></Grid>
</Window>

》》》媒体资源

在这里插入图片描述
在这里插入图片描述

pack url 方法访问二进制资源

》》》
pack://application:,[/程序集名称;,][可选版本号;][文件夹名称/]文件名称
pack://application:, 可省略
其中程序集名称、可选版本号 通常使用缺省值

下面效果一样


等价于后台代码
this.img01.Source= new BitMapImage( new Uri(“Images/xx.png”) ,UriKind.Relative);
this.img01.Source= new BitMapImage( new Uri(“pack://application:,/Images/xx.png”) ,UriKind.Absolute);

》》》pack://application:, 开头表示绝对路径,需要使用Urikind.Absolute
》》》缩写代表相对路径,UriKind必须为Relative,且代表根目录的 / 可以省略

UriKind.RelativeOrAbsolute
UriKind.Relative
UriKind.Absolute

引用命名空间

xmlns:自己起的别名=“clr-namespace:命名空间名称;assembly=程序集名称”

如果不记得命名空间,程序集

在这里插入图片描述

FrameworkElement

FrameworkElement 类 有个属性 Resources
在这里插入图片描述

只要继承FrameworkElement类的控件都有Resources这个属性,这就意味着该控件能在控件标签内定义资源。

在这里插入图片描述
在这里插入图片描述
所以 顶级控件Window,也是有资源的 Window.Resources

自定义资源

在这里插入图片描述
》》后台可以获取资源

//方式1》》
ZEN z = this.FindResource("z") as ZEN;
//方式2》》
ZEN  z =  this.Resources["z"] as ZEN

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述



http://www.lryc.cn/news/425368.html

相关文章:

  • vue3-03-创建响应式数据的几种方法
  • stm32智能颜色送餐小车(openmv二维码识别+颜色识别+oled显示)
  • 对接的广告平台越多,APP广告变现的收益越高?
  • LINUX原始机安装JDK
  • MR400D工业级带网口4G DTU:RS232/RS485 TO LTE深度测评
  • 第四范式发布AI+5G视频营销产品 助力精准获客与高效转化
  • DVWA-IDS测试(特殊版本)
  • 轻度自闭症的温柔启航:星启帆的康复之旅
  • 一、OpenTK简介
  • Dom4j详细介绍
  • thissuper
  • cv::normalize()
  • 【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存
  • [Linux CMD] 目录与文件相关的命令
  • redis面试(十三)公平锁排队代码剖析
  • 冷热数据拆分
  • JavaScript 基础(四)
  • 《机器学习by周志华》学习笔记-神经网络-01神经元模型
  • C#中常用的扩展类
  • 麒麟v10(ky10.x86_64)升级——openssl-3.2.2、openssh-9.8p1
  • 【Unity】有限状态机和抽象类多态
  • KETTLE调用http传输中文参数的问题
  • Gaussian Splatting 在 Ubuntu22.04 下部署
  • ppt中添加页码(幻灯片编号)及问题解决方案
  • Flutter 初识:对话框和弹出层
  • 启程与远征Ⅳ--人工智能革命尚未发生
  • Python教程(十五):IO 编程
  • Qt窗口交互场景、子窗口数据获取
  • 【C++学习笔记 18】C++中的隐式构造函数
  • 单元训练01:LED指示灯的基本控制