0

私は ListBox と DataGrid を持っています。DataGrid はサプライヤーから提供された価格見積もりを表示し、ListBox はサプライヤー リストを表示します。私が達成したいのは、サプライヤーリストでサプライヤーをチェック/チェック解除し、DataGrid が ListBox でチェックされているサプライヤーからの見積もりの​​みを表示するように DataGrid をフィルタリングすることです。

私が今直面している困難は、

私はサプライヤーのユニークなリストを持っています

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 をチェック/チェック解除すると、見積もりの​​サプライヤーを同時に変更できますか? そしてそれを達成する方法は?

4

1 に答える 1

0

この場合、ObservableCollection を作成する必要はありません。クエリだけでなく、物理的なリストを作成する必要はありません。

このビューをサポートするには、SupplierQuoteQuery クラス ( ViewModel の詳細についてはMVVM パターンを参照) を導入することをお勧めします。フィルタリングされたリストが変更されたときに通知できるように、INotifyPropertyChanged を実装する必要があります。

IsChecked が変更されたときに SupplierQuoteQuery クラスに通知する何らかの方法を確立する必要があります。これにより、PropertyChanged が新しい Property FilteredQuotes に対して呼び出されるようになります。

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