我只是在學習c#,並一直在努力使用WPF中的URI。我已經搜索了一下,但沒有多少運氣。c#WPF URI語法
基本上我試圖將一個BitmapImage對象作爲一個屬性存儲在一個Car對象中。然後我想要在WPF窗體的Image控件中顯示BitmapImage。
的應用程序是一個簡單的應用程序(它是一個統一分配),所以沒有數據庫等
我有這樣的兩種方法。首先是我從文本文件中預加載汽車數據,包括我要加載的JPG的文件名。我將JPG包含在一個名爲Files的目錄中,該目錄不在我的源代碼和類文件所在的主目錄中。我已將JPG文件設置爲「內容」和「始終複製」。當我運行調試時,它將Files目錄和JPG複製到debug \ bin目錄。
我的代碼通過使用URI引用JPG來創建BitmapImage,如下所示;
BitmapImage myImage = new BitmapImage (new Uri("Files/" + Car.Imagefilename, UriKind.Relative);
Car.Image = myImage;
ImageControl.Source = myImage;
如果我在調試器中逐句通過此代碼,它有時會工作並顯示圖像,但大多數情況下它不顯示圖像。
我的第二種方法是當用戶創建一個新的汽車。此方法始終有效。在這一個中,我使用文件對話框(dlg)來選擇圖像並使用絕對路徑。
BitmapImage myImage = new BitmapImage (new Uri(dlg.Filename, UriKind.Absolute);
Car.Image = myImage;
ImageControl.Source = myImage;
所以....我不能解決爲什麼第一種方法不起作用。我認爲這與相關參考有關,但我無法弄清楚如何正確地使用語法。我嘗試過使用「pack:,,,」,我嘗試添加「component」,我在「pack」之前嘗試了一個'@'。我似乎無法找到簡單解釋這一點的東西。
道歉,如果這是直截了當,但它是我的頭!欣賞任何指針。
非常感謝!這工作。我得到它使用完整路徑,然後使用AppDomain.CurrentDomain.BaseDirectory。 我知道這很簡單! –
尼克很好。但是現在你對文件夾結構有依賴性,這可能並不理想。考慮在App.Config上存儲圖像的路徑並從那裏加載它。這樣,如果用戶決定要將圖像移動到單獨的服務器上,則只需修改配置文件,系統將繼續工作。無論如何,我很高興它爲您工作 –