如何使XamlReader.Load忽略未知属性和元素而不是抛出异常?如果它只忽略那些它会更有用。
答案 0 :(得分:3)
您不能,XamLReader.Load
要求文档格式正确。这意味着:
XAML内容字符串必须定义单个根元素。
内容字符串XAML必须是格式良好的XML,并且是可解析的XAML。
必需的根元素还必须指定默认的XML命名空间值。这通常是Silverlight名称空间,xmlns =“http://schemas.microsoft.com/winfx/2006/xaml/presentation”。在Silverlight 2及更高版本中显式需要此XML命名空间,而在Silverlight 1.0及其CreateFromXaml JavaScript方法中隐式假设它。
可以在msdn找到更多信息。
答案 1 :(得分:1)
你无法忽略未知的属性和元素。如果由于反序列化以外的原因需要将属性和元素粘贴到XAML中,请将它们放在自己的命名空间中,例如:
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="my"
xmlns:my="my-namespace"
Title="MainWindow" Height="350" Width="525">
<StackPanel my:Attribute="The XamlReader will ignore this.">
<my:Element>It will ignore this, too.</my:Element>
</StackPanel>
</Window>
请注意,您必须使用标记兼容性命名空间并将名称空间前缀添加到其Ignorable
属性,以使XamlReader
忽略您的命名空间而不是抛出异常。有关详细信息,请参阅the mc:Ignorable
documentation。