首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF Caliburn.micro应用程序中发布ViewModel类

在WPF Caliburn.micro应用程序中发布ViewModel类
EN

Stack Overflow用户
提问于 2018-03-11 14:02:56
回答 1查看 100关注 0票数 0

我写了一个程序,它有一个带有用户控件的窗口。

窗口具有用户控件绑定到的属性“”ActiveView“”。“”

我有一个switch/case语句,它根据选定的列表项将ActiveView设置为视图模型。

代码语言:javascript
复制
Case "option1":
ActiveView = new OptionOneViewModel();
Break;

Case "option2":
ActiveView = new OptionTwoViewModel();
Break;

我的问题是,每次我点击一个选项,我就是在创建一个新的ViewModel。假设我单击选项1,显示ViewModel,然后单击选项2并创建另一个ViewModel。第一个ViewModel是否仍然是资源,或者它是否被新的ViewModel自动处理和替换。

为了节省资源,我应该这样做:

代码语言:javascript
复制
If(ActiveView != Null)
{
    ActiveView.Dispose();
        //Or
    ActiveView = null;
}

在使用开关外壳设置新的ViewModel之前?

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 06:18:55

所以我想出了如何让它为我工作。在"SelectedSubject“属性中,我调用了"Selectedchanged();",然后在函数"SelectedChanged()”中,我使用切换大小写将"ActiveSubject“属性设置为与选择相关联的ViewModel。

代码语言:javascript
复制
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;

        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49217154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档