Я просто столкнулся с той же проблемой и нашел проблему, устанавливающую владельца, использующего MVVM, не заставляя приложение отказать в производстве. У меня есть Модель Представления Менеджера окон, которая включает команду для открытия окна с помощью uri окна - и я не смог установить владельца на Приложение. MainWindow без катастрофического отказа приложения.
Так - Вместо того, чтобы установить владельца, я связал свойство TopMost окна к свойству в моей модели Window Manager View, которая указывает, в настоящее время ли приложение активно. Если бы приложение активно, окно находится на вершине, как я хотел бы. Если это не активно, другие окна могут покрыть его.
Вот то, что я добавил к своей Модели Представления:
public class WindowManagerVM : GalaSoft.MvvmLight.ViewModelBase
{
public WindowManagerVM()
{
App.Current.Activated += (s, e) => IsAppActive = true;
App.Current.Deactivated += (s, e) => IsAppActive = false;
}
private bool _isAppActive = true;
public bool IsAppActive
{
get => _isAppActive;
set
{
if (_isAppActive != value)
{
_isAppActive = value;
RaisePropertyChanged(() => IsAppActive);
}
}
}
}
Вот XAML, который реализует его (я использую световой сигнал MVVM с ViewModelLocator как статический ресурс в моем приложении под названием Локатор):
<Window Topmost="{Binding WindowManager.IsAppActive, Source={StaticResource Locator}}"/>