在模型中更改集合时,WPF Combobox不会更新

时间:2012-12-10 00:51:18

标签: c# wpf combobox

Combobox中更改集合时,

WPF Model未更新。

我对DataGrid和ComboBox都使用ICollectionView。在模型中更改集合时,DataGrid正在更新,但 ComboBox未更新 。如果有其他方法可以,请告诉我。

这是代码

模型 - > 在Model I中有

public ObservableCollection<Product> MyModelProducts

ViewModel-&GT; DataGrid集合

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

ViewModel-ComboBox Collection

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

视图中的代码 - &gt;

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

将MyViewModelProducts绑定到DataGrid

将MyViewModelListOfProducts绑定到ComboBox。

1 个答案:

答案 0 :(得分:1)

  1. 您必须参考所提供的选定产品来过滤
  2. IsSynchronizedWithCurrentItem
  3. 中将DataGrid设为true
  4. 如果要更新,请提升MyViewModelListOfProducts的属性更改。您订阅MyViewModelProducts.CurrentChanged事件并从那里更新。
  5. 您可以在执行该linq查询的DistinctCategories类中拥有属性Product左右(当然,在更改时会通知),然后将ComboBox绑定到MyViewModelProducts并指向此属性 - 我认为这是首选方式,除非您认为不同的类别在模型层中确实没用。
相关问题