После того, как у меня был «кошмар WPF Initial Focus Nightmare» и на основе некоторых ответов в стеке, следующее оказалось для меня лучшим решением.
Сначала добавьте свой App.xaml OnStartup () следующим образом:
EventManager.RegisterClassHandler(typeof(Window), Window.LoadedEvent,
new RoutedEventHandler(WindowLoaded));
Затем добавьте событие WindowLoaded также в App.xaml:
void WindowLoaded(object sender, RoutedEventArgs e)
{
var window = e.Source as Window;
System.Threading.Thread.Sleep(100);
window.Dispatcher.Invoke(
new Action(() =>
{
window.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
}));
}
Проблема с многопоточностью должна быть использована, поскольку начальный фокус WPF в основном не выполняется из-за некоторых базовых условий гонки.
Я нашел следующее решение лучше всего, так как оно используется глобально для всего приложения.
Надеюсь, это поможет ...
Оран