2012-07-18 23 views
0

我正在使用鬆散的XAML(構建操作無,但始終複製到輸出目錄)。另外我有一個「根」xaml是一個資源字典,它引用了位於子文件夾中的一些合併字典。這是我的文件夾結構:XAML資源處理慢慢地讓我瘋狂

<root>\Root.xaml 
<root>\SubFolder1\MergedDict1.xaml 
<root>\SubFolder1\MergedDict2.xaml 
<root>\SubFolder2\MergedDict3.xaml 
<root>\SubFolder2\MergedDict4.xaml 

我需要能夠額外XAML文件添加到文件夾無需重新編譯,這就是爲什麼我需要寬鬆xamls工作。

在應用程序中我加載根xaml,但總是得到合併字典找不到的異常。我嘗試了很多不同的分配相對路徑作爲源的變體。其中一些包括:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="<root>/SubFolder1/MergedDict1.xaml" /> 
    <ResourceDictionary Source="/SubFolder1/MergedDict1.xaml" /> 
    <ResourceDictionary Source="SubFolder1/MergedDict1.xaml" /> 
    <ResourceDictionary Source="./SubFolder1/MergedDict1.xaml" /> 
    <ResourceDictionary Source="../SubFolder1/MergedDict1.xaml" /> 
... 

令我驚訝(和持續的恐怖)他們都沒有工作。

我開始質疑我的理智所以我甚至寫了一個小的測試應用程序生成對我來說是相對路徑,使用的URI:

 System.Uri uri2 = new Uri(@"C:\<root>\SubFolder1\MergedDict1.xaml"); 
     System.Uri uri1 = new Uri(@"C:\<root>"); 

     var r = uri1.MakeRelativeUri(uri2).ToString(); 

生成的相對路徑是,符合市場預期,SubFolder1/MergedDict1.xaml ,也沒有工作。誰能教我參與獲得正確的相對路徑的黑魔法?

回答