2010-04-14 33 views
0

我有一個包含5個項目的VS2010解決方案。其中兩個項目分別稱爲:從單獨項目的Blend載入內容圖像

爲MyResources 應用

的應用項目包含了所有的用於運行應用程序的意見和的ViewModels和資源項目中包含的所有圖像,資源字典等主題化和剝皮。

我在資源中設置了圖像的方式,我將其構建操作設置爲「內容」,並將「複製」設置爲「始終複製」。在我的應用程序項目中,我使用pack URI引用這些文件。例如:

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

這工作對我很好。主題文件夾及其所有子文件夾已正確複製到適當的文件夾,因爲我正在使用siteoforigin://。

但是,這打破了Blendability。當我在Blend 4中加載項目時,出現錯誤。

如果我使用siteoforigin,Blend會嘗試從blend.exe的執行文件夾(本例中爲C:\ Program Files \ Microsoft Expression \ Blend 4 Beta \ Themes \ Default_Theme \ BackgroundImage.png)加載圖像。

如果我更改包URI以下幾點:

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

它試圖尋找在 「主題/ default_theme/backgroundimage.png」

圖像如果我嘗試:

/MyResources;component/Themes/DefaultTheme/BackgroundImage.png

它會試圖查找圖像 「C:\爲MyResources;組件\主題\ DefaultTheme \ BackgroundImage.png」

如果我嘗試:

/Themes/DefaultTheme/BackgroundImage.png

它試圖在「C:\ Themes \ DefaultTheme \ BackgroundImage.png」中查找圖像。

所以現在我卡住了。我不知道如何引用我的圖像,而無需將它們嵌入到資源項目中,並且我無法對目錄進行硬編碼,因爲我的其他同事也將項目放在不同的文件夾中。

我試圖想出一種方法來獲取正確的URI到文件的正確位置(相對於.sln文件將會很棒),或者將文件複製到blend編譯和執行項目的位置。唉,我無法弄清楚如何。

有沒有人知道正確的方式來獲取這些圖像加載?

+0

您嘗試的第二種語法(應用程序包)應該有效。我把一個快速測試應用程序放在一起來模擬你的情況,它爲我工作。你的資源項目是什麼類型的項目?你確定你使用的路徑是正確的嗎? – 2010-04-16 05:25:36

+0

我的資源項目是一個.NET 3.5類庫。您是否將資源的構建類型設置爲內容而不是嵌入式資源?混合仍然找不到我的文件所在的正確文件夾:( 當我在混合中運行項目時,它發現資源很好,而不是在設計模式下。 – 2010-04-16 15:25:51

回答

0

我想通了。而不是使用一個包URI的,只是我用

new Uri(Environment.CurrentDirectory + "\\Themes\\DefaultTheme\\BackgroundImage.png")

,並且找到合適的文件夾中,因爲Evironment.CurrentDirectory給了我在我的主題被複制到正確的bin文件夾。

Huzzah!

相關問題