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

时间:2020-11-08 17:31:34

标签: wpf caliburn.micro

我正在使用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 machineFromSiteId, int machineToSiteId, DateTime dateForChange)
    {
        ActivateItem(_container.GetInstance<MachineChangeViewModel>().MachineChange(siteId, machineFromSiteId, machineToSiteId, dateForChange));
    }

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

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

1 个答案:

答案 0 :(得分:0)

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

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