2016-05-04 26 views
0

我有以下問題:CanExecute被稱爲,但沒有任何反應

我有命令

CancelNewFilmCommand

與代碼:

public override void Execute(object item) 
    { 
     this.ViewModel.NewItem = null; 
     this.ViewModel.ShowItem = null; 
     var onCanExecuteChanged = this.CanExecuteChanged; 
     if (onCanExecuteChanged != null) 
     { 
      onCanExecuteChanged(this, new EventArgs()); 
     } 
     AddNewFilmWindow.CanExecute(this); 
    } 
現在

在執行的CancelNewFilmCommand我調用AddNewFilmWindow命令的CanExecute。我在初始化和設置中將CancelNewFilmCommand引用爲私有字段。問題是,AddNewFilmWindow.CanExecute(this);沒做什麼。我需要它將非灰色按鈕綁定到AddNewFilmWindowCommand,並且無法弄清楚如何。

任何人都可以幫忙嗎?我試圖解決這一整天都沒有成功:/

+0

你不應該繼承/實現'ICommand'或其衍生物的每一個命令。 – Xiaoy312

+0

爲什麼不呢? :O我有每個命令的課程。每個命令都實現了ICommand。 – Shadowmak

+2

你應該使用寫一個ICommand的通用實現,並通過'Action'(用於'Execute')和'Func '(用於'CanExecute')公開功能。 – Xiaoy312

回答

0

您應該運行的AddNewFilmWindow.RaiseCanExecuteChanged()代替AddNewFilmWindow.CanExecuteChanged(this)

+0

嘿!我沒有定義RaiseCanExecuteChanged方法,我找不到任何實現示例。 :/ – Shadowmak

+0

請檢查下面的鏈接,這將有助於您實施RaiseCanExecuteChanged ......... https://groups.google.com/forum/#!topic/wpf-disciples/8aMNS1ns6ig – Peekay

+0

我不知道它似乎我RaiseCanExecuteChanged()是RelayCommands的事情。在你指出的谷歌線程中,有很多參考我不使用的RelayCommands。 – Shadowmak

相關問題