2015-04-27 35 views
1

在我的應用程序中,某些按鈕在設置爲在某個時間點處摺疊的面板中有一些按鈕,這些按鈕有一個使用"CanExecute"方法的命令綁定。當面板不可見時,我想停止執行"CanExecute"方法中的邏輯。 如果我看不到按鈕,我不需要花費資源來知道它是否可以執行。 我可以嘗試將該面板的可見性綁定到"CanExecute"方法,但我希望爲每個按鈕提供一個解決方案,因此如果它們不可見不會浪費時間。WPF按鈕處於隱藏狀態,但「CanExecute」方法上升

謝謝!

回答

0

我想你可以在按鈕不可見時刪除命令綁定。

  1. 註冊一個的CommandBinding: myUIelement.CommandBindings.Add(mycommand的);
  2. 取消註冊CommandBinding: myUIelement.CommandBindings.Remove(myCommand);
  3. 取消註冊所有CommandBindings:myUIelement.CommandBindings.Clear();
+0

這是一個很好的workarround,但我不得不把它寫在代碼的屏幕或BaseButton類有類似的行爲 – Nacho

+0

你可以刪除和通過設定的指令綁定的背後在XAML中使用樣式和觸發器。 – Clint

0

如何使用對象類型,如果它有參數

_someCommand = new RelayCommand(
        p => someCommandExecute((someObject)p), 
        p => p is someObject); 

或嘗試驗證值,如果它沒有參數

_someCommand = new RelayCommand(
        p => someCommandExecute((someObject)p), 
        p => someObject != null); 

我」我不確定你是否想要做這樣的事情,但是如果你可以發佈你的代碼樣本這將是有益的。

這也可以幫助你https://rachel53461.wordpress.com/2011/05/08/simplemvvmexample/