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

时间:2015-01-09 12:13:38

标签: c# wpf xaml resourcedictionary

我在资源字典上做了一个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”。  ---&GT; System.IO.IOException:Assembly.GetEntryAssembly()返回null。

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

即使我尝试在源代码中包含程序集名称,错误也会持续

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

1 个答案:

答案 0 :(得分:1)

使用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);