Как сделать так, чтобы XamlReader.Load просто игнорировал неизвестные атрибуты и элементы, а не создавал исключения? Было бы гораздо полезнее, если бы они игнорировались.
Вы не можете, XamLReader.Load требует, чтобы документ был правильно сформирован. Это значит:
XamLReader.Load
Строка содержимого XAML должна определять один корневой элемент.
Строка содержимого XAML должна быть правильно сформированным XML, а также быть разборной XAML.
Обязательный корневой элемент должен также указывать значение пространства имен XML по умолчанию. Обычно это пространство имен Silverlight, xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation". Это пространство имен XML требуется явно в Silverlight 2 и более поздних версиях, тогда как оно неявно предполагалось в Silverlight 1.0 и его JavaScript-методе CreateFromXaml.
дополнительную информацию можно найти в msdn .
Вы не можете игнорировать неизвестные атрибуты и элементы.Если вам нужно вставить атрибуты и элементы в ваш 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 игнорировал ваше пространство имен, а не создавал исключение.См. документацию mc:Ignorable для получения полной информации.
Ignorable
XamlReader
mc:Ignorable