如何控制继电器命令执行?

时间:2012-06-16 15:32:42

标签: c# mvvm relaycommand

我有一个这样的按钮:

<Button x:Name="buttonGetData" Width="70" Content="GetData" Command="{Binding SaveCommand}"  />

我希望当执行保存命令直到它没有完成时,用户无法点击我的按钮或点击我的按钮我的命令不执行! 我对这个问题的解决方案是

 bool execute;
private void MyCommandExecute(CommandParam parm)
{
  if(execute)return;
  execute=true;
  ///Some actions
  execute=false;

}

这个问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

ICommand接口还定义了CanExecute方法。您可以在执行开始时使该命令返回false,并在完成后将其设置回true。这也为您提供了在命令执行期间禁用按钮的好处。

我不使用RelayCommand,因此我不确定它是否与DelegateCommand的{​​{1}}方法相同,但使用的是RaiseCanExecuteChanged(其中基本上与DelegateCommand)做同样的事情,你可以这样做(注意这个实现不是线程安全的):

RelayCommand