0

サンプルからコードを屈折させています:

同じ XAML で実行されている次の C# コード ビハインドにたどり着きました。

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 タグ'Skills'が 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>) スキル クラスがもうないため。代わりにSkill、ObservableCollection 内にいくつかの要素が必要です。

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

また、従業員のコンストラクター内でSkills ObservableCollection を初期化する必要があります。

于 2013-01-26T12:12:04.363 に答える