4 Stimmen

Warum gibt FocusManager.GetFocusedElement(this) immer null zurück?

Ich habe eine app, die läuft gut als eine einfache WPF-app mit einem Event-Handler auf GotFocus auf der Ebene des Hauptfensters wie so:

    private void MainWindowGotFocus(object sender, RoutedEventArgs e)
    {
        var element = FocusManager.GetFocusedElement(this) as FrameworkElement;
        if (element != null)
        {
               //...

Dies verhält sich jedoch seltsam, wenn es als XBAP-App eingestellt ist (fast genau der gleiche Code - das wichtigste visuelle Element ist Seite und nicht Fenster, aber das Ereignis ist immer noch verfügbar und ausgelöst).

In diesem Fall ist das Element (XBAP/wpf-Browser-Anwendung) immer null.

Irgendwelche Ideen? :(

6voto

Andrei Rînea Punkte 19502

Nun, dank eines Kollegen von mir (Bogdan R.) haben wir entdeckt, dass FocusManager.IsFocusScope unterschiedliche Standardwerte für Window (WPF) und Page (XBAP) hat, nämlich ist es falsch für letztere.

Durch einfaches Setzen von FocusManager.IsFocusScope auf dem Seitenelement wird das Problem behoben.

3voto

George Birbilis Punkte 2619

Könnte auch versuchen, die Keyboard.FocusedElement stattdessen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X