0

我定义了一个假视图模型,供 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

4

1 回答 1

0

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

MyProject - 样本 - MyImage.png

以下 URI 有效:

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

这些不会:

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

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

于 2013-03-27T07:32:38.787 回答