2013-07-27 42 views
2

我想要做的事情很簡單,但是我沒有看到有關如何執行此操作的示例。如果字段已更改,我希望啓用「更新」按鈕。CanExecute WPF命令現場更改

上下文:我有一個WPF窗體,它更新數據庫中的一行。我不希望用戶能夠點擊「更新」按鈕,除非他/她修改了某些表單值。我正在使用MVVM模式,並有4個可更新的屬性(名稱,地址,電話和電子郵件)。除非用戶更改其中一個屬性,否則我不想啓用「更新」按鈕。

謝謝!

指令代碼(我不能確定爲放於CanExecute什麼樣的驗證)

public ICommand UpdateCommand 
    { 
     get; 
     internal set; 
    } 

    private void CreateUpdateCommand() 
    { 
     UpdateCommand = new RelayCommand(UpdateExecute, CanExecuteUpdateCommand); 
    } 

    private void UpdateExecute(object obj) 
    { 
     ClientModel.UpdateClient(_selectedClient); 
    } 

    private bool CanExecuteUpdateCommand(object obj) 
    { 
     return true; 
    } 

回答

0

嗨,你可以有一個像hasChanges一個布爾標誌,它是在二傳手假initially.and你的可修改屬性設置爲true,更新後將其設置爲false。並且在CanExecute中返回hasChanges而不是true。假設你有財產名稱

private bool hasChanges=false; 
    private string name; 

    public string Name 
    { 
     get 
     { 
      return name; 
     } 
     set 
     { 
      name = value; 
      hasChanges = true; 
      Notify("Name"); 
     } 
    } 

    private bool CanExecuteUpdateCommand(object obj) 
    { 
     return hasChanges; 
    } 
private void UpdateExecute(object obj) 
{ 
    ClientModel.UpdateClient(_selectedClient); 
    hasChanges=false; 
} 

我希望你有一個主意。