如何绑定基于组合的Observable Collection?

时间:2017-04-07 05:58:34

标签: wpf mvvm datagrid

说我的模型看起来像下面显示的那样,

public class Organization
    private string _organizationName;
    private List<Employee> _employees;
    private List<Contractor> _contractors;

    public string OrganizationName
    {
        get
        {
            return _organizationName;
        }
        set
        {
            _organizationName= value;
        }
    }

    public List<Employee> Employees
    {
        get { return _employees; }
        set { _employees = value; }


    }

    public List<Contractor> Contractors
    {
        get
        {
            return _contractors;
        }
        set
        {
            _contractors = value;
        }
    }
}

}

public class Employee
{
    public string Name { get; set; }

public int EmpID { get; set; }

    public double Salary { get; set; }

}
public class Contractor
{
public string Name { get; set; }

    public int ContractorID { get; set; }

    public double ExperianceCredit { get; set; }

}

我有一个View(MainWindow)和一个Associated ViewModel(OrganizationViewModel)

查看(主窗口)

有三个控件:

1)ListView -OrganizationListView 2)DataGrid -EmployeesDataGrid 3)DataGrid -ContractorsDataGrid

视图模型(OrganizationViewModel)

private ObservableCollection<Organization> _organizations

    public ObservableCollection<Organization> Organizations
    {
        get
        {`enter code here`
            return _organizations;
        }
        set
        {
            _organizations = value;
        }
    }

结合:

ListView - OrganizationListView - 绑定到组织(ObservableCollection) DataGrid - EmployeesDataGrid - 绑定到Organizations.Employees DataGrid - ContractorsDataGrid - 绑定到Organizations.Contractors

我在访问Employees时遇到问题  &安培;组织的承包商(ObservableCollection)在尝试将其绑定到视图中的相应控件时?

EmployeesDataGrid&amp; ContractorsDataGrid应该依赖于OrganizationListView

这是可以实现的,还是应该采用不同的方法?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的是要有一个组织列表,那么您要做的是,当您点击其中一个组织时,数据网格中会显示该组织的员工和承包商表。我是对的吗?

如果是这样,你就是这么做的。您想要的是在组织表和承包商表之间创建关系以及组织表与员工表之间的单独关系。在我看来,用POCO做这件事真是个傻瓜。

有很多方法可以做到这一点,但我的第一选择是一个类型化的DataSet。设置3个表和2个关系,创建包含实例化数据集的视图模型。将组织表绑定到列表视图以及与datagrids的两个关系,您就完成了!

相关问题