Combobox ItemsSource Binding(MVVM) - 如何重置ItemsList

时间:2012-06-21 09:18:04

标签: wpf data-binding combobox itemssource

我有一个与ItemsSource绑定到ObservableCollection的组合框。 RadioButton允许用户选择模式。对于每种模式,组合框中应该有专用的不同列表。

使用Observablecollection的问题是,一旦初始化了public observableCollection,只能通过清除所有内容并逐项添加新列表来修改它。

这非常低效,导致我对所选项目进行验证时出现问题。

您能否建议另一种允许我重置项目来源的方法,以便在没有删除/添加的情况下在UI中刷新它?

1 个答案:

答案 0 :(得分:2)

一种非常基本的方法:

class VM
{
  private ObservableCollection mode1;
  private ObservableCollection mode2;

    //view binds to this
  public ObservableCollection<T> X { get; private set; }

    //changing radiobutton invokes this
  public void ChangeMode( mode )
  {
    if( mode == 1 )
      X = mode1;
    else if( mode == 2 )
      X = mode2;
    else
      X = null;
  }
}

尚未测试过,但应该有效;如果在更改模式后UI中没有更新,则应在ChangeMode返回之前为X调用RaisePropertyChanged( ... )。 此外,如果您不添加/删除列表,则不需要ObservableCollection,而只需使用List<T>