private void OnClosingLocked(object sender, LockedEventArgs e)
{
if (!this.Dispatcher.CheckAccess()) {
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new LockedChangedHandler((s, e2) => {
OnClosingLocked(sender, e2);
}), sender, e);
return;
}
if (hWnd == IntPtr.Zero) {
hWnd = new System.Windows.Interop.WindowInteropHelper(Application.Current.MainWindow).Handle;
}
//Заблокировать закрытие окна
IsCloseLocked = e.IsLocked;
this.IsCloseButtonEnabled = !e.IsLocked;
//Отключим кнопку "Х"
NativeMethods.EnableMenuItem(NativeMethods.GetSystemMenu(hWnd, false),
NativeMethods.SC_CLOSE,
e.IsLocked ? NativeMethods.MF_DISABLED | NativeMethods.MF_GRAYED : NativeMethods.MF_ENABLED);
}