2017-11-07 6 views
0

Telerik에서 간단한 DelegateCommand가 있습니다. 케이스가 있습니다. 텍스트 상자와 버튼이있는 화면이 있습니다. 저장을 클릭 할 때마다 버튼이 사용 중지되어야하며 작업이 완료 될 때까지 클릭을 허용해서는 안됩니다. SaveRemarks이 실행될 때까지 구현은 다음과 같습니다canexecute를 기반으로 명령을 사용하지 않으려면

,

public DelegateCommand SaveRemarksCommand 
    { 
     get 
     { 
      return _saveRemarksCommand = new DelegateCommand((r) => 
       { 
        CanSaveRemarks = false; 
        SaveRemarksCommand.InvalidateCanExecute(); 
        SaveRemarks(null); 
       }, 
       (result) => 
       { 
        return CanSaveRemarks; 
       }); 

     } 
    } 

여기에 내가 거짓으로 CanSaveRemarks를 조작하고있다. 지금 문제는 버튼을 여러 번 클릭하면 여러 번 클릭하여 중복 된 내용을 저장할 수 있다는 것입니다.

답변

0

명령 처리기에서 CanSaveRemarks 속성을 추가로 확인할 수 있습니다. 이 속성은 이미 사용할 수 있으므로 다른 것을 소개 할 필요가 없습니다.

new DelegateCommand((r) => 
{ 
    if (!CanSaveRemarks) 
    { 
     return; 
    } 

    CanSaveRemarks = false; 
    try 
    { 
     SaveRemarksCommand.InvalidateCanExecute(); 
     SaveRemarks(null); 
    } 
    finally 
    { 
     CanSaveRemarks = true; 
    } 
}, 
(result) => 
{ 
    return CanSaveRemarks; 
});