使用 XamlReader.Load() 解析嵌套的 xaml 文件

Parsing nested xaml files with XamlReader.Load()

我正在对资源字典执行 XamlReader.Load 方法,其中有几个合并的字典。

FileStream s = new FileStream(@"/Resources/Xaml/MainXaml.xaml", FileMode.Open);
var obj = XamlReader.Load(s);

MainXaml 然后加载其他几个 xaml 文件:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="first.xaml"></ResourceDictionary>
        <ResourceDictionary Source="second.xaml"></ResourceDictionary>       
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

每当我尝试这样做时,我都会遇到异常:

'设置 属性 'System.Windows.ResourceDictionary.Source' 抛出异常。行号“4”和行位置“29”。 ---> System.IO.IOException: Assembly.GetEntryAssembly() returns null.

设置 Application.ResourceAssembly 属性 或使用 pack://application:,assemblyname;component/ 语法来指定要从中加载资源的程序集。

即使我尝试在源代码中包含程序集名称,错误仍然存​​在

<ResourceDictionary Source="/MyApp;first.xaml"></ResourceDictionary>

使用Pack Uri's

<ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Assembly_Name;component/first.xaml"/>
        </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

或者

 FileStream s = new FileStream(@"pack://application:,,,/Assembly_Name;component/Xaml/MainXaml.xaml", FileMode.Open);