1

でコレクションが変更されたときに、 WPFComboboxが更新されていませんModel

ICollectionViewDataGridとComboBoxの両方に使用しています。モデルでコレクションが変更されると、DataGridは更新されますが、ComboBoxは更新されません。これを行う別の方法があるかどうか教えてください。

これがコードです

モデル->モデルには

public ObservableCollection<Product> MyModelProducts

ViewModel->DataGridコレクション

public ICollectionView MyViewModelProducts
{
  get 
  {   
    return CollectionViewSource.GetDefaultView(MyModel.Instance.MyModelProducts);             
  }
}

ViewModel-ComboBoxコレクション

public ICollectionView MyViewModelListOfProducts
{
  get 
  {   
    return CollectionViewSource.GetDefaultView(MyModel.Instance.MyModelProducts.Select(p => p.Category).Distinct().ToList<string>());            
  }
}

ビュー内のコード->

<ComboBox ItemsSource="{Binding MyViewModelListOfProducts, Mode=OneWay}" />

MyViewModelProductsをDataGridにバインドする

MyViewModelListOfProductsをComboBoxにバインドします。

4

1 に答える 1

1
  1. フィルタリングするには、提供されている選択した製品を参照する必要があります
  2. でtrueに設定IsSynchronizedWithCurrentItemしますDataGrid
  3. 更新するタイミングのプロパティ変更をMyViewModelListOfProducts発生させます。イベントをサブスクライブし、MyViewModelProducts.CurrentChangedそこから更新します。
  4. そのlinqクエリを実行するクラスにプロパティDistinctCategoriesなどを含めることができ(もちろん、変更時に通知されます)、次にをバインドしてこのプロパティを指すことができます-これは、あなたが考えない限り、好ましい方法だと思います個別のカテゴリは、モデルレイヤーでは実際には使用されません。ProductComboBoxMyViewModelProducts
于 2012-12-10T00:59:14.420 に答える