【问题标题】:XAML resource handling slowly driving me crazyXAML 资源处理慢慢让我发疯
【发布时间】:2012-07-18 12:25:38
【问题描述】:

我正在使用松散的 XAML(构建操作无,但始终复制到输出目录)。我还有一个“根”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,但也不起作用。谁能教我获取正确相对路径所涉及的黑魔法?

【问题讨论】:

    标签: c# wpf uri resourcedictionary mergeddictionaries


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-17
      • 2012-07-05
      • 2011-08-18
      • 1970-01-01
      • 2011-12-26
      • 2018-05-28
      • 2011-05-30
      • 2012-11-02
      相关资源
      最近更新 更多