Заставить XamlReader.Load игнорировать неизвестный xml вместо сбоя? - PullRequest
1 голос
/ 07 сентября 2010

Как сделать так, чтобы XamlReader.Load просто игнорировал неизвестные атрибуты и элементы, а не создавал исключения? Было бы гораздо полезнее, если бы они игнорировались.

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Вы не можете, 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 .

1 голос
/ 07 сентября 2010

Вы не можете игнорировать неизвестные атрибуты и элементы.Если вам нужно вставить атрибуты и элементы в ваш 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 для получения полной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...