Wie kann ich den Fokus auf eine ListBox korrekt auf die laden, wenn Sie verwendet databinding?

Ich in der Regel rufen myControl.Focus() im Loaded-Ereignis-handler, aber das scheint nicht zu funktionieren für eine ListBox die Datenbindung, um eine Liste der benutzerdefinierten Objekten. Wenn ich meine Anwendung, die ListBox's erste Element ist ausgewählt, aber der Schwerpunkt liegt anderswo.

Ich dachte, das könnte sein, weil der Fokus eingestellt wird, bevor die datengebundene Elemente geladen werden... aber der folgende code zeigt, dass es tatsächlich Dinge, weil ctrlItemsCount zeigt die Zahl 8.

Wie kann ich einstellen, dass der erste Schwerpunkt in dieser situation, und was ist der richtige Ort, um anfängliche Schwerpunkt in der Regel?

private void onLoad(object sender, RoutedEventArgs e) {
        if (ctrlCountries.Items.Count > 0) {
             ctrlItemsCount.Text = ctrlCountries.Items.Count;
             ctrlCountries.SelectedIndex = 0;
             FocusManager.SetFocusedElement(this, ctrlCountries);
        }

  }

EDIT: ich zog Sie diesen code in das loaded-Ereignis für die tatsächliche ListBox selbst. Es fast funktioniert, der Schwerpunkt liegt jetzt auf der ListBox, aber ich muss immer noch drücken Sie die Tastatur nach UNTEN einmal, bevor Sie Einzelteil #0 hat den Tastatur-cursor. In anderen Worten, der focus, oder der cursor befindet, ist 1 Kerbe oben Element #0 aus irgendeinem Grund:

private void onCountriesLoaded(object sender, RoutedEventArgs e) {
    ctrlCountries.SelectedIndex = 0;
    FocusManager.SetFocusedElement(this, ctrlCountries);
    Keyboard.Focus();
}
Schreibe einen Kommentar