我在设计时定义了一个伪视图模型,供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子文件夹中加载任何内容。这很奇怪,因为我看到了使用子文件夹的各种示例,尽管我没有找到设计时的示例。我还尝试使用pack scheme siteoforigin,但是Designer尝试从Visual Studio应用程序文件夹中加载图像。
我看到了here
所描述的类似问题答案 0 :(得分: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使用最后一个更改。