Как изменить пользовательский тип на Системный тип (строку) в WPF XAML?

Возможный дубликат:
Как использовать вложенный класс в WPF XAML?

Я рефракторил код из примера:

И после исключения класса навыков, с соответствующими изменениями в
в MainWindow.xaml

<local:Team>
  <local:Employee Name="Larry" Age="21">
    <local:Employee.Skills>
      <!--  local:Skills -->
       <local:Skills>

Я имею в MainWindow1.xaml.cs:

using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApplication
{
  public class Skill
  {//I'd like to remove class Skill having moved property string Description into class Employee 
    public string Description { get; set; }
  }

   public class Employee 
   {
    public string Name { get  ; set; }
    public int Age  { get; set; }
//I'd like to change in the next line Skill --> String               
    public List<Skill> Skills { get; set; }
    //public List<String> Skills { get; set; }

     public Employee()
     {
//I'd like to change in the next line Skill --> String       
       Skills=new List<Skill>();
       //Skills=new List<string>();
     }
  }

  public class Team : ObservableCollection<Employee> { }

  public class Company
  {
    public string CompanyName { get  ; set; }
    public Team Members { get  ; set; }
  }

  public class Companies : ObservableCollection<Company> { }

  public partial class Window1 : Window
    {
      public Window1()
    {
        InitializeComponent();
    }
  }
}

Как я должен изменить Window1.XAML, если изменить:

  • List<Skill> в List<String>

в Window1.xaml.cs?

Связанные вопросы, основанные на том же коде:

Обновить:
Просто чтобы заметить, что я ошибся:

  • "А" вместо А (без кавычек);
  • так должно быть String (но нет string) в XAML (в то время как в C# либо string или же String)
  • попытался поместить A как атрибут, в соответствии с существующим кодом, в один тег <sys:String /> вместо: <sys:String>A</sys:String>

1 ответ

Решение

Вот ваш класс Employee с новым подходом, который вы хотели, чтобы он был похож -

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public List<String> Skills { get; set; }

    public Employee()
    {
        Skills=new List<string>();
    }
}

Вы можете создать экземпляр в файлах xaml для того же, как это -

        <local:Team x:Key="teams">
            <local:Employee Name="Larry" Age="21">
                <local:Employee.Skills>
                    <sys:String>A</sys:String>
                    <sys:String>B</sys:String>
                    <sys:String>C</sys:String>
                </local:Employee.Skills>
            </local:Employee>
        </local:Team>

Вам нужно определить sys пространство имен в вашем xaml для объявления экземпляра строки в xaml -

xmlns:sys="clr-namespace:System;assembly=mscorlib"

Я тестировал приведенный выше код с ListBox и его работа -

<ListBox ItemsSource="{Binding Skills, Source={StaticResource teams}}"/>
Другие вопросы по тегам