一旦所選項目發生變化,只需致電OnPropertyChanged
即可。
您可以預先填充背景字典,其關鍵字是可能的主要項目,其值是詳細列表的列表。
注意下面的工作,你ViewModel
必須實現INotifyPropertyChanged
例如
public class MyViewModel : INotifyPropertyChanged
{
public IEnumerable<MasterOption> MasterList {get;set;}
public IEnumerable<DetailOption> DetailList {get;set;}
Dictionary<MasterOption,List<DetailOption>> DetailLookup;
MasterOption _SelectedMasterOption;
public MasterOption SelectedMasterOption
{
get { return _SelectedMasterOption;}
set
{
_SelectedMasterOption = value;
LoadDetailsList();
OnPropertyChanged("SelectedMasterOption");
}
void LoadDetailsList()
{
InitDictionary();
if (DetailLookup.ContainsKey(SelectedMasterOption))
DetailList = DetailLookup[SelectedMasterOption];
else
DetailList = null;
OnPropertyChanged("DetailList");
}
void InitDictionary()
{
if (DetailLookup == null)
{
//Grab fill the lookup dictionary with information
}
}
}
後面我現在就想試試這個,但我有幾個問題。我在代碼中看到,你調用'LoadDetailsList()',但沒有傳遞它,所以它可以確定要獲取哪些細節。 2.你究竟是什麼意思_一旦選擇的項目發生變化,就調用OnPropertyChanged的細節集合。然後'Dictionary'就會像'Dictionary'一樣。 –
DerMeister
2011-04-18 16:37:55
我明白了,對不起 - 在'LoadDetailsList'中你使用'_SelectedMasterOption'。我的其他問題仍然存在;-) – DerMeister 2011-04-18 16:48:04
我修改了上面的代碼,希望有所幫助。我做到這一點並不是唯一的方式,它只是一種方式。 – Jose 2011-04-18 19:29:45