1

Combobox集合在Model.

ICollectionView同时使用 DataGrid 和 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. 中设置IsSynchronizedWithCurrentItem为真DataGrid
  3. MyViewModelListOfProducts在您希望它更新时提出属性更改。您订阅该MyViewModelProducts.CurrentChanged事件并从那里更新它。
  4. 您可以在执行该 linq 查询DistinctCategories的类中拥有一个左右的属性Product(当然,在更改时会收到通知),然后将其绑定ComboBoxMyViewModelProducts并指向该属性 - 我认为这是首选方式,除非您认为不同的类别在模型层中确实没有用。
于 2012-12-10T00:59:14.420 回答