我有一个模型:
该人的“新”财产是一个布尔。如何在我的UI上为公司动态计算每个部门的新员工数量?
我已经在我的MainView的XAML中为每个公司设置了一个TextBox,我希望该文本框告诉我公司(来自所有部门)的新人总数。我怎么能这样做?
答案 0 :(得分:0)
最好的方法是拥有专门的部门视图和视图模型。然后,部门视图模型将公开所有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
绑定到所有部门,并显示部门视图。
答案 1 :(得分:0)
您可以创建所需的数据结构并创建将返回所需值的属性
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;
}
}
}