2013-03-26 42 views
0

我在設計時定義了WPF應用程序中的視圖使用的假視圖模型(Visual Studio 2012,.NET 4.5)。視圖模型引用作爲項目內容一部分的圖像。只要我把根項目文件夾中的形象,它成功地在設計時使用以下URI約定加載:無法在設計時從項目子文件夾加載XAML資源

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

+0

出於好奇,如果您在XAML中設置圖像的源代碼,它會工作嗎? – 2013-03-26 19:38:01

+0

是的,我可以指定「MyImage.png」和「Samples/MyImage.png」,它們都是從XAML開始工作的。問題只是以編程方式從子文件夾加載圖像。 – 2013-03-26 19:43:41

+0

我沒有VS2012在工作,但我只是跑了一個快速測試,並使用d:DataContext =「{d:DesignInstance Type = lcl:DesignData}」語法在VS2010中工作得很好。請注意,我的圖像的構建操作是資源。我會在幾個小時後回家時檢查2012年。您可以嘗試的一件事是將VS的新實例作爲調試器附加到運行設計器的VS實例上。您可能會在輸出窗口中看到一些錯誤。 – 2013-03-26 20:10:19

回答

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 

UPDATE。經過微軟論壇的建議,我在每次更改URI後都做了更多的重新啓動Visual Studio的測試,而我上面的理論似乎是錯誤的。字符大小寫無關緊要(所有三個版本都有效),但有時VS Designer無法趕上最近的更改,並且需要重新啓動VS才能讓設計器使用上次更改。