0

我有一个 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 时,可以同时更改 Quote 中的 Suppliers 吗?以及如何实现?

4

1 回答 1

0

在这种情况下,您不需要生成 ObservableCollection,您不会被锁定为拥有一个物理列表而不仅仅是一个查询。

我建议您引入一个 SupplierQuoteQuery 类(有关 ViewModels 的更多信息,请参阅MVVM 模式)来支持此视图,它需要实现 INotifyPropertyChanged 以便您可以在过滤列表更改时提供建议。

当您的 IsChecked 更改时,您需要以某种方式通知 SupplierQuoteQuery 类,这应该会导致为新的 Property FilteredQuotes 调用 PropertyChanged。

public IEnumerable<Quote> FilteredQuotes { get {
  return from x in Quotes where x.Supplier.IsChecked select x; } }
于 2012-09-21T09:27:34.033 回答