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

Wpf 正在执行代码,但我不执行';我不知道为什么,wpf,caliburn.micro,Wpf,Caliburn.micro,我使用Caliburn Micro作为我的WPF框架,并激活一个用户控件-我使用的是SimpleContainer。激活用户控件的代码取决于场景,因此我有两种方法来处理选项。这是我视图中用于激活用户控件的代码 public void MachineFromSite(int siteId, int machineFromSiteId, DateTime dateFromSite) { ActivateItem(_container.GetInstance&l

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

        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;
    }
}