0

我正在使用松散的 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,也不起作用。谁能教我获得正确相对路径所涉及的黑魔法?

4

1 回答 1

0

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

于 2012-07-18T12:33:31.537 回答