我正在重构示例中的代码:
和after excluding Skills class,以及相应的变化 在 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 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();
}
}
}
如果要移动,我应该如何更改Window1.XAML:
Skill
课程进入Employee
课程?
基于相同的代码:
更新(回答第一次RV1987的评论):
答案tp Creating an instance of a nested class in XAML告诉我有可能但不清楚如何使用:
另一个answer by townsean基于引文from msdn:
“您的自定义类不能是嵌套类。嵌套类和常规 CLR使用语法中的”dot“会干扰其他WPF和/或XAML功能,例如附加属性“。
但是,它是一般,对于“你的自定义类”,但是在我的具体代码中附加了这个问题,有几十个“点” (比如Employee.Skills
)并不是我的自定义类是嵌套的,但我的自定义类里面有嵌套类。
Update2(回答第二次RV1987的评论问题):
是的,我刚刚尝试了+ approach,但这不起作用,但是:
答案 0 :(得分:41)
不幸的是,XAML(来自MSDN)无法实现您的目标:
您的自定义类不能是嵌套类。嵌套类和一般CLR使用语法中的“点”会干扰其他WPF和/或XAML功能,例如附加属性。