1

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

我使用 Observablecollection 的问题是,一旦公共 observableCollection 被初始化,修改它只能通过 Clear all 并逐项添加新列表。

这是非常低效的,并且会导致我对所选项目的验证出现问题。

您能否建议另一种方法,使我可以重置项目源,以便无需删除/添加即可在 UI 中刷新它?

4

1 回答 1

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 中没有更新,则应RaisePropertyChanged( ... )在 ChangeMode 返回之前调用 X。此外,如果您不向列表中添加/删除,则实际上不需要 ObservableCollection,您可以只使用List<T>

于 2012-06-21T09:26:07.550 回答