我有一个ListBox和一个DataGrid,DataGrid显示供应商提供的报价,而ListBox显示供应商列表。我想要实现的是检查/取消选中供应商列表中的供应商并过滤DataGrid,以便DataGrid只显示ListBox中检查的供应商的报价。
我现在面临的困难是,
我有一个独特的供应商列表
class Supplier
{
bool IsChecked {get; set;}
Person Supplier {get; set;}
}
ObservableCollections<Supplier> SupplierList;
我有一份报价清单
class Quote
{
double Price {get; set;}
Supplier Supplier{get; set;}
Quote(double price, Supplier supplier)
{
Price = price;
Supplier = supplier;
}
}
ObservableCollections<Quote> QuoteList;
QuoteList绑定到DataGrid,而SupplierList绑定到ListBox。
当我在ListBox中选中/取消选中SupplierList时,报价中的供应商是否可以同时更改?以及如何实现这一目标?
答案 0 :(得分:0)
在这种情况下,您不需要生成ObservableCollection,您不会被锁定为具有物理列表而不仅仅是查询。
我建议您引入一个SupplierQuoteQuery类(有关ViewModel的更多信息,请参阅MVVM pattern)以支持此视图,它需要实现INotifyPropertyChanged,以便您可以建议何时更改过滤列表。
当您的IsChecked发生更改时,您需要通过某种方式通知SupplierQuoteQuery类,这应该会导致为新的Property FilteredQuotes调用PropertyChanged。
public IEnumerable<Quote> FilteredQuotes { get {
return from x in Quotes where x.Supplier.IsChecked select x; } }