正在执行代码,但我不知道为什么

问题描述

我正在使用Caliburn Micro作为WPF框架,并且正在激活用户控件-我正在使用SimpleContainer。激活用户控件的代码取决于一种情况,因此我有两种方法来处理这些选项。这是我视图中用于激活用户控件的代码

return planetaRepository.findAll().flatMap(planetaVO -> {
    return planetaServiceFacade.recuperarFilmesParticipados(planetaVO.getNome()).collectList()
                        .doOnNext(planetaVO::setFilmes)
                        .thenReturn(planetaVO);
});

在MachineChangeviewmodel中,我有两种方法来处理这两个调用

        public void MachineFromSite(int siteId,int machineFromSiteId,DateTime dateFromSite)
    {
        ActivateItem(_container.GetInstance<MachineChangeviewmodel>().MachineFromSite(siteId,machineFromSiteId,dateFromSite));
    }

    public void MachineChange(int siteId,int machinetoSiteId,DateTime dateForChange)
    {
        ActivateItem(_container.GetInstance<MachineChangeviewmodel>().MachineChange(siteId,machinetoSiteId,dateForChange));
    }

为方案1(“来自站点的计算机”)运行代码时,它正确使用了MachineFromSite方法并设置了displayName,但是它两次调用了此代码。 当代码在场景2(机器更改)中运行时,使用MachineChange方法可将其正确显示,但随后将调用MachineFromSite方法并将displayName设置为“来自站点的机器”。

我不知道为什么会这样,有人可以帮我吗?

解决方法

您需要仔细阅读代码库,以弄清楚调用MachineFromSite方法的位置。

例如,如果您在XAML标记中将此控件的Name属性设置为此名称,则会导致Caliburn.Micro调用该方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...