1

我有一个这样的模型:

  • 公司
    • 部门
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)
    • 部门
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)
    • 部门
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)
      • 人(姓名、国籍、新)

该人的“新”属性是一个布尔值。如何在公司的 UI 上动态统计每个部门的新员工数量?

我在我的 MainView 的 XAML 中为每家公司设置了一个文本框,我希望该文本框告诉我公司(来自所有部门)的新员工总数。我怎样才能做到这一点?

4

2 回答 2

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绑定,显示部门视图。

于 2013-09-30T10:26:36.517 回答
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;
        }
    }
}
于 2013-09-30T12:22:49.230 回答