C# 从单独项目的混合加载内容图像

C# 从单独项目的混合加载内容图像,c#,wpf,resources,expression-blend,C#,Wpf,Resources,Expression Blend,我有一个包含5个项目的VS2010解决方案。其中两个项目被称为: 我的资源 应用 应用程序项目包含应用程序要运行的所有视图和视图模型,资源项目包含用于主题化和蒙皮的所有图像、资源字典等 我在参考资料中设置图像的方式是,将它们的构建操作设置为“内容”,将“复制”设置为“始终复制”。在我的应用程序项目中,我使用包URI引用这些文件。例如: pack://siteoforigin:,,,/Themes/DefaultTheme/BackgroundImage.png 这对我来说很好。由于我使用的是si

我有一个包含5个项目的VS2010解决方案。其中两个项目被称为:

我的资源 应用

应用程序项目包含应用程序要运行的所有视图和视图模型,资源项目包含用于主题化和蒙皮的所有图像、资源字典等

我在参考资料中设置图像的方式是,将它们的构建操作设置为“内容”,将“复制”设置为“始终复制”。在我的应用程序项目中,我使用包URI引用这些文件。例如:

pack://siteoforigin:,,,/Themes/DefaultTheme/BackgroundImage.png

这对我来说很好。由于我使用的是siteoforigin://,因此主题文件夹及其所有子文件夹都已正确复制到正确的文件夹中

然而,这打破了混合性。在Blend 4中加载项目时,会出现错误

如果我使用siteoforigin,Blend会尝试从Blend.exe的执行文件夹中加载图像,在本例中为C:\Program Files\Microsoft Expression\Blend 4 Beta\Themes\Default\U Theme\BackgroundImage.png

如果我将包URI更改为以下内容:

pack://application:,,,/IQ.IQKiosk.Resources;组件/Themes/DefaultTheme/BackgroundImage.png

它尝试在themes/default_theme/backgroundimage.png中查找图像

如果我尝试:

/我的资源;组件/Themes/DefaultTheme/BackgroundImage.png

它尝试在C:\MyResources中查找图像;组件\Themes\DefaultTheme\BackgroundImage.png

如果我尝试:

/主题/DefaultTheme/BackgroundImage.png

它尝试在C:\Themes\DefaultTheme\BackgroundImage.png中查找图像

所以现在我被卡住了。我不知道如何引用我的图像而不必将它们嵌入到资源项目中,而且我无法硬编码目录,因为我的其他同事也将该项目放在不同的文件夹中

我试图想出一种方法,将适当的URI放到文件相对于.sln文件的适当位置,或者将文件复制到blend编译和执行项目的位置,这将非常棒。唉,我不知道该怎么做


有人知道加载这些图像的正确方法吗?

我知道了。我没有使用包URI,而是使用

新建UriEnvironment.CurrentDirectory+\\Themes\\DefaultTheme\\BackgroundImage.png

它找到了合适的文件夹,因为Evironment.CurrentDirectory给了我一个合适的bin文件夹,我的主题被复制到这个文件夹


胡萨

您尝试的第二种语法application pack应该可以工作。我组装了一个快速测试应用程序来模拟你的情况,它对我很有效。您的资源项目是什么类型的项目?您确定使用的路径正确吗?我的资源项目是一个.NET 3.5类库。您是否将资源的构建类型设置为内容而不是嵌入式资源?Blend仍然找不到文件所在的正确文件夹:当我在Blend中运行项目时,它可以很好地找到资源,而不是在设计模式下。