#c# #.net #wpf
#c# #.net #wpf
Вопрос:
Иногда Window.Activate()
не работает в другой системе.
var window = Application.Current.Windows.OfType<Window>().FirstOrDefault(y => y.IsActive) ?? Application.Current.Windows.OfType<Window>().FirstOrDefault();
if (window != null)
window.Activate();
Я хочу решение, которое не должно давать сбоев в любой системе, а также хочу знать основную причину этого.
Комментарии:
1. Вы можете попробовать переключиться
window.Topmost = true; window.Topmost = false;
непосредственно передwindow.Activate();
. Это может быть хорошим обходным путем для таких редких ситуаций.
Ответ №1:
Это может привести к сбою, если вы вызываете его из потока, отличного от пользовательского интерфейса. В этом случае вам следует перенести вызов в диспетчер.
Application.Current.Dispatcher.Invoke(() =>
{
///.... UI stuff
});