【问题标题】:WPF, command is not executingWPF,命令未执行
【发布时间】:2017-02-12 19:34:32
【问题描述】:

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

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

【问题讨论】:

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

标签: c# wpf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你需要返回一个实际的命令,所以它必须存在,但如果它不存在,你总是可以创建它。例如,让属性“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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      相关资源
      最近更新 更多