【发布时间】:2016-06-12 13:23:35
【问题描述】:
我的 WPF 应用程序的用户不时能够触发两次绑定到按钮的命令。
XAML 代码:
<Button x:Name="btnAccept"
Style="{StaticResource FlatButtonLarge}"
Height="42"
Command="{Binding Path=SubmitCmd}"
Content="Submit" />
我还有 KeyBindings
<Window.InputBindings>
<KeyBinding Key="F9" Command="{Binding SubmitCmd}" />
</Window.InputBindings>
我无法重现错误,但根据数据库中的更改,我断定该命令一次又一次被触发两次。它真的可行吗?我该如何防止这种现象。 SubmitCmd 将新记录添加到数据库并关闭表单。
下面是代码:
vm.SubmitCmd = new RelayCommand(pars => DoSubmit(), pars => vm.CmdSubmitCanExecute, "Submit" );
private void DoSubmit()
{
try
{
if (!vm.LaunchAllowed)
{
this.Close();
}
else
{
vm.LaunchAllowed = false;
bool isOk = DBService.SaveToDB(vm.Dto);
if (isOk)
{
DialogResult = true;
this.Close();
}
else
{
ShowError(this, result);
vm.LaunchAllowed = true;
}
}
}
catch (Exception ex)
{
ShowError(this, ex.Message);
vm.LaunchAllowed = true;
}
}
和 ViewModel 代码:
public ICommand SubmitCmd{ get; set; }
public bool CmdSubmitCanExecute
{
get
{
return LaunchAllowed;
}
}
【问题讨论】:
-
你能出示
SubmitCmd的代码吗?