Ошибка загрузки XAML при использовании contentProperty - PullRequest
2 голосов
/ 25 июня 2010

Я читаю больше на XAML, и я создал файл XML и хочу загрузить его. Все это работает, но когда я использую атрибут ContentProperty и, что более важно, удаляю теги Company.Employees из файла XML, я получаю сообщение об ошибке «не могу добавить в компанию» при загрузке файла XML.

Код:

<?xml version="1.0" encoding="utf-8" ?>
 <Company Name="BBC" xmlns="clr-namespace:XamlLoading;assembly=XamlLoading">
  <Company.Owner> 
    <Person Name="John" Age="49"/>
  </Company.Owner>

  <!--<Company.Employees>
    <Person Name="Dave" Age="66" />
     <Person Name="Paul" Age="45"/>
  </Company.Employees>-->

 <Person Name="Dave" Age="66" />
 <Person Name="Paul" Age="45"/>
</Company>
[ContentProperty("Employees")]
public class Company 
{
    public Company()
    {
        Employees = new List<Person>();
    }

    public Person Owner { get; set; }

    public string Name { get; set; }
    public List<Person> Employees { get; set; }
}


    static void Main(string[] args)
    {
        using (FileStream fs = File.OpenRead(@"..\..\company.xml"))
        {

            Company c = (Company)XamlReader.Load(fs); * ERROR HERE

            Console.WriteLine(c.Name);
            Console.WriteLine(c.Owner);

            foreach (var item in c.Employees)
            {
                Console.WriteLine("{0} : ", item);
            }

            Console.ReadLine();
        }
    }

1 Ответ

1 голос
/ 23 марта 2011

Я бы посоветовал вам обновить до последней версии .NET.Ваш код отлично работает для меня.

Это очень интересный пример XAML.Я никогда не видел, чтобы он использовал этот способ раньше.Обычно XAML используется как HTML-разметка для декларативного определения пользовательского интерфейса. Blend - это редактор WYSIWYG для создания пользовательских интерфейсов путем генерации XAML.

Вы продемонстрировали некоторые интересные возможности для реализации данных из xml с использованием XamlReader.

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