我的WPF應用程序不時的用戶能夠觸發兩次綁定到按鈕的命令。綁定到該按鈕的命令被觸發兩次
XAML代碼:
<Button x:Name="btnAccept"
Style="{StaticResource FlatButtonLarge}"
Height="42"
Command="{Binding Path=SubmitCmd}"
Content="Submit" />
我有同樣鍵綁定
<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;
}
}
和視圖模型代碼:我覺得我看到這個太
public ICommand SubmitCmd{ get; set; }
public bool CmdSubmitCanExecute
{
get
{
return LaunchAllowed;
}
}
你可以顯示'SubmitCmd'的代碼嗎? – Valentin