我写了一个程序,它有一个带有用户控件的窗口。
窗口具有用户控件绑定到的属性“”ActiveView“”。“”
我有一个switch/case语句,它根据选定的列表项将ActiveView设置为视图模型。
Case "option1":
ActiveView = new OptionOneViewModel();
Break;
Case "option2":
ActiveView = new OptionTwoViewModel();
Break;我的问题是,每次我点击一个选项,我就是在创建一个新的ViewModel。假设我单击选项1,显示ViewModel,然后单击选项2并创建另一个ViewModel。第一个ViewModel是否仍然是资源,或者它是否被新的ViewModel自动处理和替换。
为了节省资源,我应该这样做:
If(ActiveView != Null)
{
ActiveView.Dispose();
//Or
ActiveView = null;
}在使用开关外壳设置新的ViewModel之前?
发布于 2018-06-07 06:18:55
所以我想出了如何让它为我工作。在"SelectedSubject“属性中,我调用了"Selectedchanged();",然后在函数"SelectedChanged()”中,我使用切换大小写将"ActiveSubject“属性设置为与选择相关联的ViewModel。
public string SelectedSubject
{
get { return _selectedSubject; }
set {
_selectedSubject = value;
Selectedchanged();
NotifyOfPropertyChange(() => SelectedSubject);
}
}
public void Selectedchanged()
{
switch(SelectedSubject)
{
case "User Information":
ActiveSubject = new UserInformationViewModel();
break;
case "Dealer Locations":
ActiveSubject = new HelpLocationViewModel();
break;
case "Schedule Information":
ActiveSubject = new HelpScheduleViewModel();
break;
case "Write Off Information":
ActiveSubject = new HelpWriteOffViewModel();
break;
case "Loading Schedules":
ActiveSubject = new HelpLoadingScheduleViewModel();
break;
case "Working with Repair Orders":
ActiveSubject = new HelpRepairOrdersViewModel();
break;
case "Working with Write Offs":
ActiveSubject = new HelpWorkingWithWriteOffViewModel();
break;
case "Generating Reports":
ActiveSubject = new HelpGeneratingReportsViewModel();
break;
case "Working with Application Data":
ActiveSubject = new HelpSavingDataViewModel();
break;
default:
ActiveSubject = new PrimaryViewModel();
break;
}
}https://stackoverflow.com/questions/49217154
复制相似问题