Wpf 正在执行代码,但我不执行';我不知道为什么
我使用Caliburn Micro作为我的WPF框架,并激活一个用户控件-我使用的是SimpleContainer。激活用户控件的代码取决于场景,因此我有两种方法来处理选项。这是我视图中用于激活用户控件的代码Wpf 正在执行代码,但我不执行';我不知道为什么,wpf,caliburn.micro,Wpf,Caliburn.micro,我使用Caliburn Micro作为我的WPF框架,并激活一个用户控件-我使用的是SimpleContainer。激活用户控件的代码取决于场景,因此我有两种方法来处理选项。这是我视图中用于激活用户控件的代码 public void MachineFromSite(int siteId, int machineFromSiteId, DateTime dateFromSite) { ActivateItem(_container.GetInstance&l
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,但它调用了此代码两次。
当代码为scenarion 2(机器更改)运行时,使用MachineChange方法是正确的,但此时调用MachineFromSite方法并将DisplayName设置为“机器自站点”
我不明白为什么会发生这种情况,有人能帮我解决吗?您需要查看代码库,以确定从何处调用
MachineFromSite
方法
例如,如果在XAML标记中将控件的
Name
属性设置为该名称,它将导致Caliburn.Micro调用该方法。那么您从其他地方调用MachineFromSite
方法?如果没有看到你的代码,别人是不可能说的?我的本能是什么也不说!但后来我看得更远一点,发现视图中有一个名为MachineFromSite的控件——我重命名了它,问题就解决了。谢谢你让我找到了明显的原因,非常感谢。
public class MachineChangeViewModel : Screen
{
public MachineChangeViewModel()
{
}
public MachineChangeViewModel MachineFromSite(int siteId, int machineFromSiteId, DateTime dateFromSite)
{
DisplayName = "Machine From Site";
return this;
}
public MachineChangeViewModel MachineChange(int siteId, int machineFromSiteId, int machineToSiteId, DateTime dateForChange)
{
DisplayName = "Machine Change";
return this;
}
}