2012-08-31 58 views
2

我使用這些方法來動態加載圖像和資源目錄,但他們沒有在任何情況下相對URI路徑工作不正常

new Uri(@"pack://application:,,/Images/lession_tab.png"); 

這種方法DONOT圖像工作的工作,但它的資源文件工作。

new Uri("/project;component/Resources/Dictionary1.xaml", UriKind.Relative); 

此方法不適用於資源目錄,但它適用於圖像。

如果我正確地得到這個包://應用工作,得到當地assesmbly路徑,那麼爲什麼這不是圖像
這是給異常無法找到資源「圖像/ lession_tab.png」工作。

回答

2

IIRC,圖像是默認添加到項目「爲內容的」而不是「爲資源」,我不確定你是否可以用這個URI語法來引用「內容」。他們有什麼建設行動?資源或內容?如果內容,我認爲你應該使用普通的URL,如「/blah/image.png」。檢查http://msdn.microsoft.com/en-us/library/aa970069.aspx雖然他們中有幾個地方有些陌生的字眼..

另一件事是,包/應用有三個逗號:像pack://application:,,,/ContentFile.xaml不是兩個!每個','代表一個空的子定位器,所以請確保你嘗試了三個,因爲位置的含義發生了變化。

1

嘗試設置生成操作=資源並複製到OutputDirectory =不要爲第一種情況複製。

您也可以使用下面的代碼片段加載「資源」項目:

public static class UriHelper 
{ 
    /// <summary> 
    /// Gets absulute URI for provided relative path 
    /// </summary> 
    /// <param name="baseType">Base type for ussage as URI root</param> 
    /// <param name="relativePath">Relative path</param> 
    /// <returns>Absolute Uri</returns> 
    public static Uri GetUri(Type baseType, string relativePath) 
    { 
     Assembly oAssembly = Assembly.GetAssembly(baseType); 
     AssemblyName oName = oAssembly.GetName(); 
     return new Uri( 
       String.Format(
        "pack://application:,,,/{0};v{1};component/{2}", 
        oName.Name, 
        oName.Version.ToString(), 
        relativePath), 
       UriKind.Absolute); 
    } 
} 
+0

thnx代碼,我會研究它 – Buzz