2013-07-27 1 views
2

내가하고 싶은 일은 상당히 간단하지만 온라인 수행 방법에 대해서는 존경심이 없었습니다. 필드가 변경되면 '업데이트'버튼이 활성화되도록하고 싶습니다.필드 변경시 WPF 명령을 수행 할 수 있습니다.

컨텍스트 : 데이터베이스의 행을 업데이트하는 WPF 양식이 있습니다. 사용자가 일부 양식 값을 수정하지 않으면 '업데이트'버튼을 클릭 할 수 없도록하고 싶습니다. MVVM 패턴을 사용 중이며 업데이트 할 수있는 네 가지 속성 (이름, 주소, 전화 및 전자 메일)이 있습니다. 사용자가 이러한 속성 중 하나를 변경하지 않는 한, 업데이트 단추가 활성화되지 않게 할 수 있습니다.

감사합니다.

명령 코드

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

안녕 당신이 세터 거짓 initially.and가 hasChanges 같은 부울 플래그를 가질 수있다 (필자는 CanExecute 유효성 검사의 종류를 넣어에 관해서는 확실하지 오전) 변경 가능한 속성 중을 true로 설정하고 업데이트 한 후 다시 false로 설정하면 CanExecute에서 true 대신 hasChanges를 반환합니다. 재산이 있다고 가정하십시오.

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

아이디어가 있으시길 바랍니다.

관련 문제