【问题标题】:Unable to load a XAML resource from a project subfolder at design-time无法在设计时从项目子文件夹加载 XAML 资源
【发布时间】:2013-03-27 23:59:20
【问题描述】:

我定义了一个假视图模型,供 WPF 应用程序中的视图在设计时使用(Visual Studio 2012,.NET 4.5)。视图模型引用作为项目内容一部分的图像。只要我将图像放在根项目文件夹中,它就会在设计时使用以下 URI 约定成功加载:

var Image = new BitmapImage(
new Uri(@"pack://application:,,,/MyAppAssemblyName;component/MyImage.png"));

图像被标记为嵌入资源(我实际上尝试将其标记为内容,并且加载也很好)。

但我想从 Sample 项目子文件夹中使用它,所以我将上面的代码更改为:

var Image = new BitmapImage(
new Uri(@"pack://application:,,,/MyAppAssemblyName;component/Samples/MyImage.png"));

然后它停止工作。无论我尝试什么(内容、嵌入式资源等),都不会从项目的 Samples 子文件夹中加载任何内容。这很奇怪,因为我看到了各种使用子文件夹的示例,尽管我还没有找到设计时的示例。我也尝试使用打包方案 siteoforigin,但后来 Designer 尝试从 Visual Studio 应用程序文件夹加载图像。

我看到here描述的类似问题

【问题讨论】:

  • 出于好奇,如果在 XAML 中设置图像的 Source 是否有效?
  • 是的,我可以同时指定“MyImage.png”和“Samples/MyImage.png”,它们都可以通过 XAML 工作。问题只是以编程方式从子文件夹加载图像。
  • 我没有使用 VS2012,但我只是进行了快速测试,并使用 d:DataContext="{d:DesignInstance Type=lcl:DesignData}" 语法在 VS2010 中运行良好。请注意,我的图像的构建操作是资源。我会在几个小时后回家查看 2012 年。您可以尝试的一件事是将 VS 的新实例作为调试器附加到正在运行设计器的实例。您可能会在输出窗口中看到一些错误。
  • 谢谢 Abe,但您是否以编程方式引用了设计数据模型中的图像?
  • 是的。我创建了一个名为 Image 的属性,我在数据模型的构造函数中将其设置为 .png。它适用于我在子文件夹中的图像。

标签: wpf visual-studio xaml resources design-time


【解决方案1】:

我以为我终于明白了,问题在于字符大小写。这是我的项目结构:

我的项目 - 样品 - 我的图像.png

以下 URI 有效:

pack://application:,,,/MyProject;component/samples/MyImage.png

这些不:

pack://application:,,,/MyProject;component/Samples/MyImage.png
pack://application:,,,/MyProject;component/samples/myimage.png

更新。在 Microsoft 论坛的建议之后,我在每次 URI 更改后重新启动 Visual Studio 进行了更多测试,我的上述理论似乎是错误的。字符大小写无关紧要(所有三个版本都有效),但有时 VS Designer 无法赶上最近的更改,需要重新启动 VS 才能让 Designer 使用最后的更改。

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多