我有一个这样的按钮:
<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;
}
这个问题有更好的解决方案吗?
答案 0 :(得分:1)
ICommand
接口还定义了CanExecute
方法。您可以在执行开始时使该命令返回false
,并在完成后将其设置回true
。这也为您提供了在命令执行期间禁用按钮的好处。
我不使用RelayCommand
,因此我不确定它是否与DelegateCommand
的{{1}}方法相同,但使用的是RaiseCanExecuteChanged
(其中基本上与DelegateCommand
)做同样的事情,你可以这样做(注意这个实现不是线程安全的):
RelayCommand