Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF,命令未执行_C#_Wpf - Fatal编程技术网

C# WPF,命令未执行

C# WPF,命令未执行,c#,wpf,C#,Wpf,我正在尝试使用WPF在C#中创建简单的蛇游戏。我有多个用户控件。在第一个用户控件中,我有一个玩家列表。您可以选择一个玩家并单击选择按钮。单击此按钮后,将显示第二个用户控件。此用户控件包含启动蛇游戏的按钮 问题是,所有用户控件都是在运行应用程序时创建的,但绑定到蛇游戏按钮的命令是在单击“选择”按钮后创建的。现在,如果单击“开始蛇游戏”按钮,则不会执行该命令。我的问题是:在创建用户控件之前,命令对象是否必须存在,或者是否有方法通知用户控件已创建命令 您应该尝试在命令上实现INotifyPropert

我正在尝试使用WPF在C#中创建简单的蛇游戏。我有多个用户控件。在第一个用户控件中,我有一个玩家列表。您可以选择一个玩家并单击选择按钮。单击此按钮后,将显示第二个用户控件。此用户控件包含启动蛇游戏的按钮


问题是,所有用户控件都是在运行应用程序时创建的,但绑定到蛇游戏按钮的命令是在单击“选择”按钮后创建的。现在,如果单击“开始蛇游戏”按钮,则不会执行该命令。我的问题是:在创建用户控件之前,命令对象是否必须存在,或者是否有方法通知用户控件已创建命令

您应该尝试在命令上实现INotifyPropertyChanged接口。它将绑定属性的更改通知控件。
看一看,“FirstName”属性有一个例子。

您需要返回一个实际的命令,因此它必须存在,但如果它不存在,您总是可以创建它。例如,让属性“getter”在返回命令之前确保命令存在:

private ICommand myThing;
public ICommand MyThing
{
    get
    {
        if (myThing == null)
        {
            myThing = new MyCommand(myArgs);
        }
        return myThing;
    }
}
或者,如果您正在运行C#6,则可以在自动属性声明中初始化该命令:

public ICommand MyCommand { get; } = new MyCommand(myArgs);

不需要,在创建用户控件之前不需要创建它,但是它绑定到的路径应该在创建时通知任何观察者。如果您添加更多的代码,那么您可能有更高的机会得到有意义的答案:)