资源
基础点
WPF支持传统资源,还支持对象级资源,每个元素可以携带自己的资源;
资源都是字典形式
对象级资源的定义与查找
<Window x:Class="WpfApplication2.command1"
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:WpfApplication2"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="command1" Height="300" Width="300">
<Window.Resources>
<sys:String x:Key="name">人才</sys:String>
<sys:Double x:Key="age">25</sys:Double>
</Window.Resources>
<Grid x:Name="grid1" >
<TextBox x:Name="textBox" Text="{StaticResource name}" />
<!--数值形资源只能用到数值的属性去-->
<Slider x:Name="slider" Minimum="{StaticResource age}"/>
</Grid>
</Window>
<!--{StaticResource name}key="name"的资源会一层一层往外查找,直到程序给App.xml里定义的,如果都找不到就会报异常-->
C#的查找写法:textBox.Text=this.FindResource("name").ToString();
资源很多时可以单独出一个文件
<Window.Resources>
<ResourceDictionary Source="red.xaml"></ResourceDictionary>
</Window.Resources>
动静态资源
<Window.Resources>
<sys:String x:Key="name">人才</sys:String>
<sys:String x:Key="name2">人才2</sys:String>
</Window.Resources>
<Grid x:Name="grid1" >
<TextBox x:Name="textBox" Text="{StaticResource name}" >
<TextBox x:Name="textBox2" Text="{DynamicResource name2}" />
<!--如果通过button点击事件等改变了name2的值,那么{DynamicResource name2}则会自动改变-->
</Grid>
添加二进制资源
文本资源
xaml读取:
<Window x:Class="WpfApplication2.command1"
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:WpfApplication2"
xmlns:prop="clr-namespace:WpfApplication2.Properties"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="command1" Height="300" Width="300">
<Grid x:Name="grid1" >
<TextBox x:Name="textBox" Text="{x:Static prop:Resources.Name}" />
</Grid>
</Window>
C#读取:
textBox.Text = Properties.Resources.Name.ToString();
Resources.resx多用于做多语言
图片语音资源
或者当做文件带过去
<Image x:Name="image" Source="test.jpg"/>
若为二进制,其读法也如上,直接使用路径即可。只是C#读法不一样
Uri imgUri = new Uri(@"test.jpg", UriKind.Relative);
image.Source = new BitmapImage(imgUri);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构