在我的WPF应用程序中,在某些情况下设置DialogResult = true会引发一个异常,告知无法在不可见的窗口上设置DialogResult。 窗口启动:
Window.ShowDialog()
以前没有调用Window.Close()和DialogResult。 如何确保
DialogResult = true;
可以在不引发错误的情况下执行吗?
确切的例外内容是:
只有在创建Window并显示为对话框后才能设置DialogResult。
这是代码
// FormConstructor
public FrmAccept()
{
InitializeComponent();
vm = new AcceptViewModel();
vm.CmdSubmit = new RelayCommand(pars => DoSubmit(), pars => vm.SubmitCanExecute);
this.DataContext = vm;
}
private void DoSubmit()
{
try
{
if (!vm.IsGuiEnabled)
{
this.Close();
}
else
{
vm.IsGuiEnabled = false;
bool isOk = DBervice.SaveDB(vm.Data);
if (isOk)
{
PrintData(); // This can cause an Exception
}
if (iOk)
{
DialogResult = true; // << === Here Exception Raises in Some Cases
this.Close();
}
else
{
vm.IsGuiEnabled = true;
}
}
}
catch (Exception ex)
{
vm.IsGuiEnabled = true;
}
}
XAML的一部分
<Button x:Name="btnAccept"
Style="{StaticResource FlatButtonLarge}"
IsEnabled="{Binding Path=IsGuiEnabled}"
Height="42"
Content="Submit">
<Button.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding Path=CmdSubmit}" />
</Button.InputBindings>
</Button>