0

我正在重构示例中的代码:

我来到以下 C# 代码隐藏,使用相同的 XAML 运行:

namespace WpfApplication1 
{
    public class Skill
      {
        public string Description { get; set; }
      }

      //I'd like to comment out the next line
      public class Skills : ObservableCollection<Skill>{  }

        public class Employee 
      {
        public string Name { get  ; set; }
        public int Age  { get; set; }
        //public Skills Skills { get; set; }
        //instead of line above - works!
        public ObservableCollection<Skill> Skills { get; set; }
      }

      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 MainWindow : Window
        {
        public MainWindow()
      {
          InitializeComponent();
      }
    }
}

即从

  • public Skills Skills { get; set; }

  • public ObservableCollection<Skill> Skills { get; set; }

Employee课堂 上

因此,我想摆脱,即注释掉这一行:

public class Skills : ObservableCollection<Skill>{  }

但我得到:

错误 1 ​​XML 命名空间“clr-namespace:_24_129_21_Master_Detail_Binding”中不存在标记“技能”。第 13 行位置 34

Window1.xaml 中

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

我该如何更改 XAML 才能做到这一点?

我应该如何为此更改 XAML?

4

1 回答 1

2

在您的Window1.xaml课程中删除对技能课程的引用:(例如<local:Skills>)因为您不再拥有技能课程。相反,您需要SkillObservableCollection 中的许多元素:

<local:Team>
   <local:Employee Name="Larry" Age="21">
     <local:Employee.Skills>
        <local:Skill />
        <local:Skill />
       ....

此外,您可能应该在 Employee 的构造函数中初始化Skills ObservableCollection。

于 2013-01-26T12:12:04.363 回答