WPF XAML ViewModel与datagrid和listview的绑定
以下是我试图实现的一个最简单的工作示例: XAML: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
视图模型:
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}">