System.Xaml和System.Windows.Markup的Xaml读者之间的区别?

use*_*620 5 c# silverlight wpf markup xaml

有两个Xaml读者.其中一个包括在System.Xaml另一个包括在内System.Windows.Markup.他们之间有什么区别?

Yur*_*rii 6

摘自MSDN

WPF 类型和 WPF 技术通常支持依赖于对 WPF 内部结构的访问的概念。例如,WPF 如何实现依赖属性依赖于有效的类型成员查找的内部技术。这些内部的访问权限由XAML阅读和写作中提供的API启用XamlWriter,并XamlReaderSystem.Windows.Markup命名空间和PresentationFramework组装。但是,程序集中的低级别 XAML 读取器和 XAML写入器System.Xaml(基于System.Xaml.XamlReader, 的类System.Xaml.XamlWriter)无权访问 WPF 内部结构。不依赖于System.Xaml任何 WPF 特定的程序集。如果无法访问 WPF 内部结构,System.Xaml读取器和写入器将无法正确加载或保存所有 WPF 类型或基于 WPF 类型的类型。特别是,System.Xaml读者和作者不了解 WPF 依赖属性支持属性存储等概念,也不了解 WPF 如何使用样式、资源字典和模板的所有细节。因此,您可以做出以下选择:

  • 如果要加载 WPF 类型,和/或以任何方式使用 BAML 格式的 XAML,请使用 PresentationFramework XAML 读取器和 XAML 编写器。
  • 如果您不依赖任何 WPF 类型或 XAML 的 BAML 形式,并且由于特定于该框架的原因不使用其他特定技术的 XAML 读取器或 XAML 编写器实现,请使用System.XamlXAML 读取器和 XAML 编写器。