我有一个与ItemsSource绑定到ObservableCollection的组合框。 RadioButton允许用户选择模式。对于每种模式,组合框中应该有专用的不同列表。
使用Observablecollection的问题是,一旦初始化了public observableCollection,只能通过清除所有内容并逐项添加新列表来修改它。
这非常低效,导致我对所选项目进行验证时出现问题。
您能否建议另一种允许我重置项目来源的方法,以便在没有删除/添加的情况下在UI中刷新它?
答案 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>