2012-06-21 76 views
1

我有一個組合框,綁定到ObservableCollection的ItemsSource。 RadioButton允許用戶選擇一種模式。對於每種模式,應在組合框中提供專用的不同列表。Combobox ItemsSource綁定(MVVM) - 我如何重置ItemsList

我與使用Observablecollection的問題是,一旦公共observableCollection被初始化,修改它只是通過清除所有和逐項添加新列表。

這非常無效,並導致我對所選項目進行驗證的問題。

你能否提出另一種方法,允許我重置項目的源代碼,以便在UI中刷新而不刪除/添加?

回答

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>

+0

只是注意:如果您使用的是'列表'的'Mode'的'綁定「需要從」OneWay「更改爲」TwoWay「。 – Willem

+0

謝謝。沒有...它不起作用。只有X的初始化成立。確實如此,我不需要可觀察的集合,並已替換爲簡單列表,並在賦值後提升PropertyChanged。 – yhollander

+0

將測試TwoWay建議以及 – yhollander

相關問題