2017-02-12 138 views
0

我想在C#中使用WPF創建簡單的蛇遊戲。我有多個用戶控件。在第一個用戶控件中,我有一個玩家列表。您選擇一名玩家並點擊一個選擇按鈕。在你點擊這個按鈕後,顯示第二個用戶控件。此用戶控件包含啓動蛇遊戲的按鈕。WPF,命令沒有執行

問題是,當您運行應用程序時會創建所有用戶控件,但在單擊選擇按鈕後創建了一個創建蛇遊戲的按鈕綁定命令。現在,如果你點擊開始蛇遊戲按鈕,該命令不會被執行。我的問題是:在創建用戶控件之前命令對象是否存在或者是否有方法通知用戶控件該命令已創建?

+0

不,不需要在創建用戶控件之前創建它,但是它綁定的路徑應該在創建時通知任何觀察者。如果你添加更多的代碼,那麼你可能有更高的機會得到有意義的答案:) – Icepickle

回答

0

你應該嘗試在你的命令上實現INotifyPropertyChanged接口。它通知控制綁定屬性的變化。 看看here,有一個「FirstName」屬性的例子。

+0

謝謝,這解決了我的問題:) –

0

您需要返回一個實際的命令,因此它必須存在,但如果它不存在,您可以隨時創建它。例如具有這樣的性質「消氣」確保返回之前的命令是否存在:

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