【发布时间】: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