Чтобы другие окна не перекрывали ваше окно, когда оно деактивировано, вы можете добавить метод, я бы использовал решение в WPF Always On Top (я использовал его раньше, и он работал хорошо для меня ), к событию Deactivated
окна:
private void Window_Deactivated(object sender, EventArgs e)
{
Window window = (Window)sender;
window.Topmost = true;
}
Если вы хотите отображать индикатор выполнения в полноэкранном окне во время выполнения операции, вы можете сделать что-то вроде:
private Window CreateFullScreenLoadingBar()
{
Window fullscreenWindow = new YourLoadingBarWindow();
fullscreenWindow.WindowStyle = WindowStyle.None;
fullscreenWindow.WindowState = WindowState.Maximized;
fullscreenWindow.ResizeMode = ResizeMode.NoResize;
fullscreenWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
fullscreenWindow.Deactivated += delegate (object sender, EventArgs e)
{
Window window = (Window)sender;
window.Topmost = true;
};
}
Использование:
...
Window loadingBar = CreateFullScreenLoadingBar();
fullscreenWindow.Show();
fullscreenWindow.Activate();
// Your code
loadingBar.Close();
...
Где YourLoadingBarWindow
- это окно, содержащее индикатор выполнения или все, что вы хотите, чтобы пользователь видел.