我正在使用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设置为“来自站点的机器”。
我不知道为什么会这样,有人可以帮我吗?
答案 0 :(得分:0)
您需要仔细阅读代码库,以弄清楚调用MachineFromSite
方法的位置。
例如,如果您在XAML标记中将此控件的Name
属性设置为此名称,则会导致Caliburn.Micro调用该方法。