【问题标题】:How can I access a resource image within XAML in a user control library?如何访问用户控件库中 XAML 中的资源图像?
【发布时间】:2014-02-05 16:49:29
【问题描述】:

我正在编写一个 WPF 用户控件库,但在尝试通过某些 XAML 访问的资源图像时遇到了问题。只是为了好玩,图像在设计时按预期显示,仅在运行时失败。

我尝试将构建操作设置为“无”、“内容”、“资源”和“嵌入式资源”,但我不断收到以下神秘异常:

'提供值 'System.Windows.Baml2006.TypeConverterMarkupExtension' 抛出了一个 例外。'行号“18”和行位置“6”。

查看内部异常,似乎是pack URI的问题。当我尝试时:

<ImageBrush x:Key="mybrush" ImageSource="pack://application:,,,/Resources/an image.png" />

我明白了:

Assembly.GetEntryAssembly() 返回 null。

好的,所以这可能是因为我的库现在正在从另一个程序集中调用。但是当我关注the recommendations 并尝试时:

<ImageBrush x:Key="mybrush" ImageSource="pack://application:,,,my_assembly;component;/Resources/an image.png" />

我得到一个内部异常:

“无法识别 URI 前缀。”

为了增加乐趣,我有另一个图像资源,通过实际的 C# 代码(即不通过 XAML)访问它没有问题。

我做错了什么?感觉这会很简单,但现在是主管。

【问题讨论】:

  • try ImageSource="pack://application:,,,/my_assembly;component/Resources/your_image.png" 将图像标记为未嵌入的资源
  • @dellywheel 成功了!想把它作为答案,以便我可以将其标记为已接受?
  • 优秀 :) 现在将添加为答案

标签: c# image xaml resources pack-uri


【解决方案1】:

将 ImageSource 更改为

ImageSource="pack://application:,,,/my_assembly;component/Resources/your_image.p‌​ng"

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多