【发布时间】:2015-11-30 21:53:37
【问题描述】:
我已经搜索了整个互联网以寻找没有结果的解决方案。 在我的程序中,我有 UI 线程,我在两个数据网格中显示客户和订单。显示所选客户的订单。集合的定义及其更新发生在后台。 UI 的目的只是显示最新信息。我利用了 C# 4.5 中引入的最新功能,即:BindingOperations.EnableCollectionSynchronization 方法。 在我的程序中,我有定义客户类集合的客户类。反过来,Customer 类定义了 Order 类的集合。我的问题是我不知道如何正确编码下面代码的最后一行,这与订单集合绑定同步有关。此代码已简化,我省略了 OnPropertyChange 代码行以确保在数据网格中显示正确的属性 - 我想专注于集合。
public class Customers()
{
private ObservableCollection<Customer> _customerslist;
public ObservableCollection<Customer> customerslist
{get {
if (_customerslist == null)
{_customerslist = new ObservableCollection<Customer>();}
return _customerslist;
}private set
{_customerslist = value;}}
}
public class Customer
{
public customerID;
public customerName;
.....
private ObservableCollection<Order> _orderslist;
public ObservableCollection<Order> orderslist
{get {if (_orderslist == null)
{_orderslist = new ObservableCollection<Order>();}
return _orderslist;
} private set
{_orderslist = value;}}
}
public class MainWindow : Window
{
private static object _syncLockCustomers = new object();
private static object _syncLockOrders = new object();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var firstCustomer = Customers.customerslist.FirstOrDefault();
custDataGrid.DataContext = Customers.customerslist;
if (firstCustomer != null)
{
custDataGrid.SelectedItem = firstCustomer;
ordersDataGrid.DataContext = firstCustomer.Orders.orderslist;
}
BindingOperations.EnableCollectionSynchronization(Customers.customerslist, _syncLockCustomers);
BindingOperations.EnableCollectionSynchronization(Orders <-what should be here ?, _syncLockOrders);
}
}
【问题讨论】:
标签: c# wpf binding observablecollection