我有一个这样的模型:
- 公司
- 部门
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 部门
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 部门
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 人(姓名、国籍、新)
- 部门
该人的“新”属性是一个布尔值。如何在公司的 UI 上动态统计每个部门的新员工数量?
我在我的 MainView 的 XAML 中为每家公司设置了一个文本框,我希望该文本框告诉我公司(来自所有部门)的新员工总数。我怎样才能做到这一点?
最好的方法是拥有一个专门的部门视图和视图模型。然后,部门视图模型将公开所有Person
实例以及NewPersonCount
反映您想要的值的属性。
这是新视图模型的粗略示例(省略了INotifyPropertyChanged
和全部):
public class DepartmentViewModel
{
public ObservableCollection<Person> People {get; set; }
public int NewPeopleCount
{
get
{
return People.Where(p => p.New).Count();
}
}
}
部门视图将绑定到它(例如,NewPeopleCount
显示在 中TextBox
)。您的主视图很可能对所有部门都有一个ListView
或其他ItemsControl
绑定,显示部门视图。
您可以创建所需的数据结构并创建将返回所需值的属性
public class Person
{
public string Name;
public string Nationality;
public bool New;
}
public class Department
{
public List<Person> EmployeeList;
public void Add(Person person)
{
if (EmployeeList == null)
EmployeeList = new List<Person>();
EmployeeList.Add(person);
}
public int GetNewPersonCount
{
get
{
int count = 0;
if (EmployeeList != null)
{
foreach (Person p in EmployeeList)
{
if (p.New)
count++;
}
}
return count;
}
}
}
public class Company
{
public List<Department> DepartmentList;
public void Add(Department department)
{
if (DepartmentList == null)
DepartmentList = new List<Department>();
DepartmentList.Add(department);
}
public int GetNewPersonCount
{
get
{
int count = 0;
if (DepartmentList != null)
{
foreach (Department d in DepartmentList)
{
count += d.GetNewPersonCount;
}
}
return count;
}
}
}