C# 取消后WPF窗口关闭不起作用

C# 取消后WPF窗口关闭不起作用,c#,wpf,events,C#,Wpf,Events,我有一个问题似乎无法通过谷歌解决(可能是因为我没有搜索正确的标准)。我有一个关闭事件,检查一个按钮是否被启用,并弹出一个带有结果的消息框(是/否)。如果用户说不,我会在应用程序中得到想要的结果;但是,右上角的X停止工作。如何“恢复”关闭按钮(右上角的“X”),使其在按下时再次工作(并再次评估逻辑) 我试过这个: 我不想玩弄窗户的可见度。窗户哪儿也关不上。他们有脏数据,需要修复或自动保存 我在申请表中的内容是: private void DXWindow_Closing(objec

我有一个问题似乎无法通过谷歌解决(可能是因为我没有搜索正确的标准)。我有一个关闭事件,检查一个按钮是否被启用,并弹出一个带有结果的消息框(是/否)。如果用户说不,我会在应用程序中得到想要的结果;但是,右上角的X停止工作。如何“恢复”关闭按钮(右上角的“X”),使其在按下时再次工作(并再次评估逻辑)

我试过这个:

我不想玩弄窗户的可见度。窗户哪儿也关不上。他们有脏数据,需要修复或自动保存

我在申请表中的内容是:

        private void DXWindow_Closing(object sender, CancelEventArgs e)
    {

        if (BtnPatSave.IsEnabled == false) return;
        if (MessageBox.Show(Properties.Resources.PatAcctMsgBox3, Properties.Resources.PatAcctMsgBox1,
                MessageBoxButton.YesNo,
                MessageBoxImage.Warning) == MessageBoxResult.No)
        {
            e.Cancel = true;
        }
        else
        {
            var patId = TbPatId.Text;
            var usl = new UnSetLockValue();
            usl.UnSetVal(patId);
            Log.Info("Patient Account is now unlocked by user: " + Environment.UserName);
        }
    }

这是因为您正在使用MessageBox类。 它禁用“X”按钮,只允许用户提供您指定的值。
如果你不想要这种行为,我认为你必须创建自己的“MessageBox”。

解决了我自己的问题。在加载的事件中,var b=LayoutHelper.FindElement(this,o=>{if(o是按钮)返回o.Name==“PART_CloseButton”;返回false;})作为按钮;b、 可视性=可视性。已折叠;