如何更改 WPF XAML 以反映 C# 代码隐藏中的更改

本文关键字:隐藏 代码 WPF 何更改 XAML | 更新日期: 2023-09-27 17:56:02

我正在折射样本中的代码:

  • 24.129.21. 主细节绑定
    来自 C#/CSharp 教程 » Windows Presentation Foundation » Binding)

我来到了以下 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

窗口中1.xaml

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

如何更改 XAML 才能执行此操作?

我应该如何为此更改 XAML?

如何更改 WPF XAML 以反映 C# 代码隐藏中的更改

Window1.xaml类中删除对技能类的引用:(例如 <local:Skills> ),因为您不再有技能课程。相反,您希望在 ObservableCollection 中加入许多Skill元素:

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

此外,您可能应该在员工的构造函数中初始化技能可观察集合。