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

WPF之URI的使用

pack://application:,

pack://application:, 是一个在 WPF (Windows Presentation Foundation) 应用程序中用于指定资源位置的 URI (统一资源标识符) 方案的特定格式。这个格式用于访问嵌入在应用程序程序集(assemblies)中的资源,如图像、XAML 文件、样式等。
解析这个 URI 的各个部分:

**pack://:**这是 URI 方案的开始,表示这是一个包 URI,用于访问包含在包(在这种情况下是 WPF 应用程序的程序集)中的资源。
**application::**这指定了资源位于当前应用程序的程序集中。与之相对的是 siteoforigin:,后者用于访问与应用程序部署位置相同的网站的资源,但 siteoforigin: 在 WPF 应用程序中较少使用。
**,:**这部分可能看起来有些令人困惑,但它实际上是必须的,并且通常保持为空。在 WPF 的早期版本中,这个位置可能用于指定程序集的名称或路径,但在现代 WPF 应用程序中,当资源位于应用程序的主程序集时,通常留空。如果资源位于另一个程序集中,你会在这里看到该程序集的名称和可能的版本信息,例如 pack://application:,/MyAssembly;component/MyResource.xaml。
总结来说,pack://application:, 用于指定资源位于当前 WPF 应用程序的主程序集中,但没有具体指定程序集名称或路径(因为资源就在主程序集中)。这个 URI 常常与 XAML 中的资源引用一起使用,比如设置控件的 Source 属性来加载一个图像或样式文件。
**URI语法:**pack://application:,/程序集名称;[版本号;][公钥;]component/Images/1-1.bmp
**/程序集名称;[版本号;][公钥;]:**中如果没版本号、公钥的话直接写个程序集名称就可以了,但记得一定要写前面的斜杠/。

pack://application:,是默认的,可以省略。

<Image Source="pack://application:,,,/WPFStudy;component/Images/1-1.bmp"/><!--简写-->
<Image Source="/WPFStudy;component/Images/1-1.bmp"/>

原文链接:https://blog.csdn.net/jjailsa/article/details/133860936
例如,如果你有一个名为 MyImage.png 的图像文件,它被添加为 WPF 应用程序项目中的一个资源,并且你想要在 XAML 中使用这个图像,你可能会这样写:

<Image Source="pack://application:,,,/MyNamespace;component/Images/MyImage.png" />

但请注意,如果图像是直接放在项目的根目录下(没有子文件夹),并且是在主程序集中,你可能不需要指定 MyNamespace;component/ 部分,除非图像位于某个特定的命名空间或子文件夹下。然而,对于直接位于根目录的图像,更简单的方式是直接使用相对路径或 /Images/MyImage.png(如果图像在名为 Images 的子文件夹中)作为 Source 的值,前提是图像被设置为“资源”构建操作。

Demo

	pack://application:,,,/images/my.jpg当然,WPF默认Uri设置有pack://application:,,,,所以我们也可以直接将其写作:/images/my.jpg下面在讲讲装载图片的两种方式,一种用XAML引用资源,一种用代码引用资源。用XAML引用资源:
          <Image Source="pack://application:,,,/images/my.jpg"/>用代码引用资源:Image img;img.Source=new BitmapImage(new Uri("pack://application:,,,/images/my.jpg"),UriKind.Relative);
<Window x:Class="testURI.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="Window1" Height="400" Width="240"><!--堆积面板是最简单的控制面板--><StackPanel><!--1.XAML中引用图片资源--><!--也可用Image Name="image1" Source="pack://application:,,,/images/1.jpg" Height="165" Width="220"/--><Image Name="image1" Source="pack://application:,,,/images/1.jpg" Height="165" Width="220"/><!--定义Image对象,但是没有指定图片源,待在代码中指定Source源--><Image Name="image2" Height="165" Width="220"/></StackPanel>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace testURI
{public partial class Window1 : Window{public Window1(){InitializeComponent();//2.代码中引用图片资源 image2.Source = new BitmapImage(new Uri("/images/2.jpg", UriKind.Relative));}}
}

WPF入门到跪下 第三章 基础知识-文件资源

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux 各目录
  • MySQL-显示所有错误信息
  • Linux——Shell脚本和Nginx反向代理服务器
  • MCU常见相关术语缩写说明
  • pnpm build打包时占内溢出
  • 【 DHT11 温湿度传感器】使用STC89C51读取发送到串口、通过时序图编写C语言
  • Python 二进制求和
  • 第五章:卷-将磁盘挂载到容器
  • linux环境交叉编译openssl库,以使Qt支持https
  • (二)原生js案例之数码时钟计时
  • 使用ChatGPT来撰写和润色学术论文的教程(含最新升级开桶ChatGpt4教程)​​
  • MySQL事务管理(上)
  • C++ versions less than C++14/11 are not supported.报错
  • vscode 远程 Ubuntu 系统
  • 神经网络模型实现(训练、测试)
  • [译]前端离线指南(上)
  • 《Java编程思想》读书笔记-对象导论
  • Akka系列(七):Actor持久化之Akka persistence
  • Android交互
  • Computed property XXX was assigned to but it has no setter
  • Date型的使用
  • ECS应用管理最佳实践
  • Fundebug计费标准解释:事件数是如何定义的?
  • JSDuck 与 AngularJS 融合技巧
  • linux安装openssl、swoole等扩展的具体步骤
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PHP CLI应用的调试原理
  • SOFAMosn配置模型
  • Vue小说阅读器(仿追书神器)
  • 安装python包到指定虚拟环境
  • 服务器之间,相同帐号,实现免密钥登录
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 写给高年级小学生看的《Bash 指南》
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (70min)字节暑假实习二面(已挂)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (windows2012共享文件夹和防火墙设置
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (转)Windows2003安全设置/维护
  • .gitignore文件_Git:.gitignore
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net framework 4.8 开发windows系统服务
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET6 命令行启动及发布单个Exe文件
  • .net的socket示例
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ARM]ldr 和 adr 伪指令的区别
  • [bzoj 3534][Sdoi2014] 重建
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [C][栈帧]详细讲解
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [CF226E]Noble Knight's Path