【问题标题】:Parsing nested xaml files with XamlReader.Load()使用 XamlReader.Load() 解析嵌套的 xaml 文件
【发布时间】:2015-01-09 12:13:38
【问题描述】:

我正在对资源字典执行 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() 返回 null。

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

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

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

【问题讨论】:

    标签: c# wpf xaml resourcedictionary


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多