问题标签 [pack-uri]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
58048 浏览

wpf - 如何从资源中获取 BitmapImage?

我的程序集包含一个带有 BuildAction==Resource 的图像。我想从此嵌入资源中获取 BitmapImage。

我可以像这样从文件中加载 BitmapImage:

但是如何创建一个引用嵌入资源图像的 Uri?

当我尝试创建“ pack URI ”(例如pack://application:,,,/MyImage.pngor pack://application:,,,/MyAssembly;component/MyImage.png)时,会引发异常:

System.UriFormatException “无效的 URI:由于存在冒号 (':'),因此需要端口,但无法解析端口。”

我在这篇博文中找到了 UriFormatException 的修复方法

但是,应用该修复程序后,我仍然会在尝试从包 URI 加载 BitmapImage 时遇到异常。

使用该pack://application:,,,/Image.png格式时,我得到一个 NullReferenceException,而在使用该pack://application:,,,/AssemblyName;component/Image.png格式时,我得到一个 NotSupportedException “Uri 前缀无法识别”。


总结 我的问题是我试图在实例化任何 WPF 控件/窗口/等之前在进程中使用“包 URI”,因此“包”URI 方案尚未注册(其他 WPF 所需的“东西”也必须也不要设置,因为手动注册打包方案本身并不能解决问题)。解决方案是等到实例化我的 WPF 用户控件后才能使用包 URI。

0 投票
3 回答
11414 浏览

wpf - 在单独的项目中定义 WPF 资源时避免 Visual Studio 设计器错误

在单独的项目中定义 WPF 资源时,如何避免 Visual Studio 设计器错误?

我在复合 WPF 应用程序中有三个项目:主应用程序、“基础设施”库和“模块”库。主应用程序通过它们的输出 DLL 引用其他项目(这些项目不一起位于单个解决方案中)。

ResourceDictionary在“基础设施”库中定义了一个皮肤(a 中的一些画笔和样式)。我希望主应用程序选择一个皮肤并使其可用于整个应用程序(通过MergedDictionaries在 App.xaml 中)。

在我的模块中,我想使用主应用程序加载的皮肤中定义的资源。如果我引用该资源,就好像它在本地可用一样:

几乎一切都按预期工作。例外情况是 Visual Studio 的设计者感到困惑并告诉我“找不到静态资源引用‘MainBackgroundBrush’”。这有效地阻止了我使用设计器。

如何ResourceDictionary在项目中定义“皮肤”,在主应用程序中引用该皮肤,然后在模块项目中使用其资源?

0 投票
3 回答
18716 浏览

wpf - 打包 URI 和路径不解析 WPF 中的图像

我有以下目录结构

在控件中,我有一个由以下 XAML 定义的按钮:

但是,这个包 URI 方法和“/images/view.png”都不起作用。据我了解,这与这个问题提出的问题相同。但是,我得到同样的错误。令人困惑的是,在 Visual Studio 2008 的设计器中,图像正确呈现,但在调用 InitializeComponent() 时,我得到:

无法将属性“Source”中的字符串“pack://application:,,,/images/view.png”转换为“System.Windows.Media.ImageSource”类型的对象。找不到资源“images/view.png”。标记文件“RecapSpecEditControl;component/modaltreadgroupdatadialog.xaml”第 61 行位置 40 中的对象“System.Windows.Controls.ControlTemplate”出错。

我想也许有一个我必须声明的命名空间,但根据msdn 网站,我相信我不必做这样的事情。

0 投票
1 回答
7514 浏览

wpf - 根据URI检测WPF资源是否存在

给定一个 pack:// URI,判断一个已编译资源(例如,PNG 图像,使用“资源”的构建操作编译)是否确实存在于该 URI 中的最佳方法是什么?

经过一番磕磕绊绊,我想出了这段代码,它有效但很笨拙:

(请注意,Application.GetResources文档是错误的——如果找不到资源,它会抛出异常,而不是像文档错误状态那样返回 null。) (文档已更正,请参阅下面的评论)

我不喜欢捕获异常来检测预期的(非异常)结果。此外,我实际上并不想加载流,我只想知道它是否存在。

有没有更好的方法来做到这一点,也许使用较低级别的资源 API - 理想情况下不实际加载流并且不捕获异常?

0 投票
2 回答
794 浏览

wpf - Prism v4、MEF、WPF - 为模块图形使用正确的 Uri

我的解决方案的结构是:

在此处输入图像描述

CI.Frontier.Classic 包含一个 MEF 模块。我的应用程序使用 RibbonWindow 控件,并且模块定义了应该创建的菜单项。我可以从 CI.Frontier.Classic 模块成功地将按钮添加到功能区控件,但是,我无法确定 ClassicFrontierToopTip.png 的正确 Uri

这是 FrontierClassic.cs 中创建选项卡、按钮并尝试设置功能区 ToolTipImage 的代码

此 Uri 不起作用,因为工具提示不显示。我可以使用 UriKind.Relative 还是应该使用某种“pack uri”?

0 投票
4 回答
5116 浏览

wpf - 在设计时包 uri 有效,但在运行时无效?

我正在将按钮的内容设置为图像。它看起来像这样:

在我的项目中,我有一个名为 NavigationImages 的子文件夹,在该文件夹中是图像文件 nav_up_left.png。

当我查看设计器时,图像会出现,但是在运行时我收到一个 IOException 错误,说它找不到资源。

构建操作设置为资源。

实际上,这在一个项目中运行良好。但是当我将它复制到另一个项目时它失败了。这似乎是一个非常简单的问题,但我发现自己被难住了,准备开始拔头发。@_@

您的想法和建议将不胜感激!

0 投票
4 回答
8665 浏览

c# - 在 WPF 中,如何在代码后面引用资源库中的字体?

我有一个应用程序对资源使用单独的库程序集(但不是没有代码的仅资源程序集),我想在库中包含自定义字体。

Open Type Font如果我将其 .otf 文件作为资源添加到正在执行的程序集的项目(而不是资源库项目)中,我可以加载字体,即.otf 文件,并将属性设置为 Build Action = 'Resource ' 和 Copy to Output = 'Do Not Copy',使用以下代码:

但是,当我尝试将字体添加到资源库项目时,字体不会加载。我尝试使用以下代码来加载它(另请注意:我对包 URI 没有太多经验):

该库确实适用于其他资源,例如图像。

我还尝试了 URI 的一系列其他排列但没有成功(它也不会抛出异常,只是使用默认字体显示,不确定这是否是一个单独的问题)。

我一直在 MSDN 上使用 Packaging Fonts with Applications工作,它有一个创建字体资源库的示例,但没有使用代码背后的示例(我被迫为此使用代码)。

关于我需要做什么的任何想法?我偏离轨道了吗?

0 投票
1 回答
415 浏览

c# - 使用 pack://siteoforigin 向上导航目录

嗨,我正在尝试使用siteoforigin. 我可以进入子文件夹,但如何向上导航?

这是我尝试过的代码

但它不起作用。

0 投票
1 回答
457 浏览

silverlight-5.0 - 在 Silverlight 中合并来自另一个程序集的资源

我在 silverlight 项目中添加了一个名为 ResourceDictionary1 的资源字典。

我还在名为 OtherAssembly 的项目中添加了一个 Silverlight 类库,然后在这个新程序集中添加了一个名为 ResourceDictionary2 的新资源字典:

项目结构

在我原来的项目中,我试图在 MainPage.xaml 中合并两个字典:

当我运行项目时,带有 OtherAssembly 的行会引发异常,说在该行中分配属性 System.Windows.ResourceDictionary.Source 时出错

错误

但是在设计时,设计师会按顺序显示所有内容,它会找到所有资源。

我不知道,Pack Uri 语法似乎格式不正确。

有人知道为什么我会收到此错误消息吗?

0 投票
1 回答
169 浏览

.net - WPF Pack Uri 用于引用用户目录中的文件

我们如何使用 wpf pack uri 来引用位于用户目录中的文件。我的应用程序在用户目录中创建了一个文件夹,文件从互联网下载到那里,需要通过 pack uri 在 wpf 中加载。

谢谢