如何在 WPF XAML 中使用嵌套类
本文关键字:嵌套 XAML WPF | 更新日期: 2023-09-27 17:56:07
我正在重构示例中的代码:
- 24.129.21. 主细节绑定
来自 C#/CSharp 教程 » Windows Presentation Foundation » Binding)
排除技能类后,在
在 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();
}
}
}
如果要移动,我应该如何更改窗口 1.XAML:
-
Skill
类到Employee
类
在窗口1.xaml.cs?
相关问题
基于相同的代码:
- 如何在 WPF XAML 中将自定义类型更改为系统类型(字符串)?
更新(回答第一个RV1987的评论):
答案 tp 在 XAML 中创建嵌套类的实例表明这是可能的,但不清楚如何使用:
- Ludovic的回答告诉这是可能的,但包含评论,不清楚如何使用。
这完全符合我的经验和这个问题 Townsean 的另一个答案是基于 MSDN 的引用:
"您的自定义类不得是嵌套类。嵌套类及其常规 CLR 用法语法中的"点"会干扰其他 WPF 和/或 XAML 功能,例如附加属性。但是,它是一般的,对于"您的自定义类",但在我附加到此问题的具体代码中,有几十个"点"(如
Employee.Skills
),嵌套的不是我的自定义类,而是我的自定义类嵌套了类。
更新2(回答第二个RV1987的评论问题):
是的,我刚刚尝试了+方法,这种方法不起作用,但是:
- XAML 即使在完美工作的元素上也会给我错误
- 我没有尝试自己使用反射器或从Microsoft中找到任何其他可行的方法或不太模糊的参考
不幸的是,您想要执行的操作在 XAML(来自 MSDN)中是不可能的:
自定义类不能是嵌套类。 嵌套类及其常规 CLR 用法语法中的"点"会干扰其他 WPF 和/或 XAML 功能,如附加属性。