XAML资源处理慢慢让我发疯

时间:2012-07-18 12:25:38

标签: c# wpf uri resourcedictionary mergeddictionaries

我正在使用松散的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也没有用。谁可以教我获得正确的相对路径所涉及的黑魔法?

1 个答案:

答案 0 :(得分:0)

看起来您的xaml文件都在同一个组件中。尽管如此,使用包URI可能会有所帮助:http://msdn.microsoft.com/en-us/library/aa970069.aspx