如何在WPF XAML中使用嵌套类?

Gen*_*нин 23 c# data-binding wpf xaml nested-class

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

排除技能等级后,与相应的变化
MainWindow.xaml

<local:Team>
  <local:Employee Name="Larry" Age="21">
    <local:Employee.Skills>
      <!--  local:Skills -->
       <local:Skills>
Run Code Online (Sandbox Code Playgroud)

MainWindow1.xaml.cs中:

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

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

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

     /*class Skill  
     {
          public string Description { 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 Window1 : Window
    {
      public Window1()
    {
        InitializeComponent();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果要移动,我应该如何更改Window1.XAML:

  • Skill全班分成Employee

在Window1.xaml.cs?

相关问题

基于相同的代码:

更新(回答第一次RV1987的评论):

答案tp 在XAML中创建嵌套类的实例告诉它可能但不清楚如何使用:

  • Ludovic回答说这是可能的,但包含评论不清楚如何使用.
    这完全符合我的经验和这个问题
  • townsean的另一个答案是基于msdn的引用:
    "你的自定义类不能是嵌套类.嵌套类和它们的一般 CLR使用语法中的"点"会干扰其他WPF和/或XAML功能,例如附加属性.

    但是,它一般来说,对于"你的自定义类",但在我的具体代码附加到这个问题有几十个"点"(像Employee.Skills)并且它不是我的自定义类嵌套但我的自定义类有嵌套类内.

Update2(回答第二次RV1987的评论问题):
是的,我刚刚尝试了+方法,但这不起作用,但是:

  • 即使在完美的工作元素上,XAML也会给我错误
  • 我自己并没有尝试使用反射器,也没有找到其他任何可行的方法,也没有找到微软对它的不明确的参考

Céd*_*non 42

不幸的是,你想要做的事情在XAML(来自MSDN)中是不可能的:

您的自定义类不能是嵌套类.嵌套类和一般CLR使用语法中的"点"会干扰其他WPF和/或XAML功能,例如附加属性.