2017-11-07 9 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; 
}); 
関連する問題