使用 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>
<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);
我正在对资源字典执行 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>
<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);