一旦所选项目发生变化,只需致电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