2012-08-30 72 views
0

我有一些麻煩URI在我的C#代碼URI相對VS絕對

這是工作:

var uri = new Uri("d:/Programozas dotNet/Ugyfel/Ugyfel.ClientWpf/Skins/MainSkin.xaml"); 

但不幸的是這些非:

var uri = new Uri("/Skins/MainSkin.xaml", UriKind.Relative); 
var uri = new Uri("pack://application:,,,/Skins/MainSkin.xaml"); 
var uri = new Uri("Ugyfel.ClientWpf;/Skins/MainSkin.xaml", UriKind.Relative); 

IOException異常:不能找到資源'皮膚/ mainskin.xaml'。

我該如何使用相對 uri insted 絕對

+0

@Kash應該是什麼區別?該操作不使用'\\' –

+0

@AndreasNiedermair,你是對的,它不是逐字 – Kash

回答

2

這是一個愚蠢的misstake。正確的方法是不帶「/」

var uri = new Uri("Skins/MainSkin.xaml", UriKind.Relative); 

謝謝你的努力

4

相對Url(在WPF或任何其他桌面應用程序中)相對於Environment.CurrentDirectory。通常這是exe文件所在的文件夾,但在VS單元測試環境中可能不同。

我假設在你的項目中有一個名爲「皮膚」的文件夾,可能你的exe文件在「bin \ debug」中。

最簡單的方法是將MainSkin.xaml設置爲複製到輸出目錄(在文件屬性中),以便您可以僅使用沒有路徑的名稱來引用MainSkin.xaml。

0

Urikind.Relative當您嘗試訪問應用程序所在位置的相同位置的資源時有意義。例如,在此代碼中,它使用位於應用程序的bin文件夾中的圖像。

private void btnDisplayDetails_Click(object sender, RoutedEventArgs e) 
    { 
     Person person = _ucPersons.GetSelectedPerson(); 
     if (person != null) 
     { 
      lblName.Content = person.Name; 
      lblAge.Content = person.BirthDay.ToShortDateString(); 
      Uri uri = new Uri("m_" + person.ImageRef + ".jpg", 
       UriKind.Relative); 
      imgPerson.Source = BitmapFrame.Create(uri); 
     } 
    } 

禮貌:What exactly mean by this Urikind.relative


或者當你已經定義的基礎URI它也被使用。檢查UriKind MSDN link

絕對URI由一個完整的參考 資源(例如:http://www.contoso.com/index.html),其特徵在於,同時 相對URI取決於先前定義的基URI(例如: /index.html)。