问题描述
我正在使用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调用该方法。