2012-04-25 33 views
0

我想在我的對話框中顯示一個圖像,該圖像可能位於相對於.exe所在目錄的目錄中。WPF來自相對位置的展示圖像

project 
- data 
-- logo //<-- that's where the image is located 
-bin  //<-- that's where the .exe is in 

的默認圖像應包含在.exe文件,但上顯示的對話框中,\ DATA \目錄標識應檢查第一,一個人應該被使用如果與給定文件名的圖像可以在那裏找到用於顯示而不是在.exe中。

有關如何做到這一點的任何想法?

感謝,

tabina

回答

1

使用pack URI

pack://application:,,,/ReferencedAssembly;component/data/logo/image.png 
0

當他詢問相對於EXE文件夾,我建議他指的標識應位於文件系統內(例如c:\ program files \ MyApp \ data \ logo)。所以我會檢查文件是否存在與

File.Exists("/data/logo/logo.png") 

如果它返回false,您可以加載您的嵌入式資源。

//編輯

如果您在Visual Studio IDE中使用該片段的路徑位於

<Project directory>/bin/debug/data/logo 
0

什麼,我現在做的是

// set the logo 
    string path = Environment.CurrentDirectory + "\\data\\logo\\logo.gif"; 
    var uri = new Uri(path, UriKind.Absolute); 
    try 
    { 
    this.myImg.Source = new BitmapImage(uri); 
    } 
    catch (Exception e) 
    { 
    this.myImg.Source = new BitmapImage(new Uri(@"pack://application:,,,/myAssemblyName;component/Images/logo.gif")); 
    } 

這工作得很好,但我不喜歡的是它全部寫在代碼隱藏中。我寧願讓它更可重用。 有沒有辦法將它全部放入模板並將其應用於視框/圖像?

感謝,

tabina

+0

您可以創建一個轉換器,採用綁定屬性(字符串)的值,並執行代碼。 – 2013-09-12 09:51:40