WPF XAML ViewModel与datagrid和listview的绑定

WPF XAML ViewModel与datagrid和listview的绑定,wpf,binding,viewmodel,Wpf,Binding,Viewmodel,以下是我试图实现的一个最简单的工作示例: XAML: 视图模型: public class CustomerOrderViewModel { public ObservableCollection<CustomerOrder> Assets { get; set; } public ObservableCollection<ItemState> States { get; set; } private ObservableCollection

以下是我试图实现的一个最简单的工作示例:

XAML:


视图模型:

 public class CustomerOrderViewModel
{
    public ObservableCollection<CustomerOrder> Assets { get; set; }
    public ObservableCollection<ItemState> States { get; set; }
    private ObservableCollection<Customer> Customers { get; set; }

    public CustomerOrderViewModel()
    {
        CustomerOrderService myService = new CustomerOrderService();
        CustomerService myCustomerService = new CustomerService();

        var assets = myService.GetAllOrders();
        var states = myService.GetOrderStates();
        var customers = myCustomerService.GetAllCustomers();

        States = new ObservableCollection<ItemState>();
        Customers = new ObservableCollection<Customer>();
        Assets = new ObservableCollection<CustomerOrder>();

        foreach (var asset in assets)
        {
            Assets.Add(asset);
        }

        foreach (var state in states)
        {
            States.Add(state);
        }

        foreach (var customer in customers)
        {
            Customers.Add(customer);
        }
    }
}
公共类CustomerOrderViewModel
{
公共ObservableCollection资产{get;set;}
公共可观测集合状态{get;set;}
私有ObservableCollection客户{get;set;}
公共CustomerOrderViewModel()
{
CustomerOrderService myService=新CustomerOrderService();
CustomerService myCustomerService=新CustomerService();
var assets=myService.GetAllOrders();
var states=myService.GetOrderStates();
var customers=myCustomerService.GetAllCustomers();
状态=新的可观察集合();
客户=新的可观察收集();
资产=新的可观察集合();
foreach(资产中的var资产)
{
资产。添加(资产);
}
foreach(状态中的var状态)
{
添加(州);
}
foreach(客户中的var客户)
{
客户。添加(客户);
}
}
}
我的资产已正确加载和绑定(每个客户订单一行),但未显示状态和客户列表,但它们确实有项目


我认为我绑定ListView的方式是错误的,但我找不到原因。

我必须使用ListView对象的RelativeSource属性来检索原始数据上下文,如下所示:

<ListView Margin="10" ItemsSource="{Binding   
                       Path=DataContext.Customers, 
                       RelativeSource={RelativeSource AncestorType=Window},  
                       Mode=Default}">

<ListView Margin="10" ItemsSource="{Binding   
                       Path=DataContext.Customers, 
                       RelativeSource={RelativeSource AncestorType=Window},  
                       Mode=Default}">