我正在使用松散的XAML(构建操作无,但始终复制到输出目录)。我还有一个“root”xaml,它是一个资源字典,它引用了一些位于子文件夹中的合并字典。这是我的文件夹结构:
<root>\Root.xaml
<root>\SubFolder1\MergedDict1.xaml
<root>\SubFolder1\MergedDict2.xaml
<root>\SubFolder2\MergedDict3.xaml
<root>\SubFolder2\MergedDict4.xaml
我需要能够在不重新编译的情况下将额外的xaml文件添加到文件夹中,这就是我需要使用松散的xaml的原因。
在应用程序中我加载了根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也没有用。谁可以教我获得正确的相对路径所涉及的黑魔法?
答案 0 :(得分:0)
看起来您的xaml文件都在同一个组件中。尽管如此,使用包URI可能会有所帮助:http://msdn.microsoft.com/en-us/library/aa970069.aspx