设置DialogResult有些情况会引发异常

时间:2016-03-04 09:06:54

标签: c# modal-dialog wpd

在我的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>

0 个答案:

没有答案