2016-06-20 13 views
0

Ich füge meiner Anwendung ein Validierungsmodul hinzu, das den Benutzer zu den Eingaben führt, die Aufmerksamkeit erfordern. Ich möchte diese Steuerelemente in der Reihenfolge durchlaufen, in der sie dem Visual Tree hinzugefügt wurden. Der Tab-Index für jedes Steuerelement ist auf Int Max festgelegt, was bedeutet, dass Sie in der Reihenfolge des Visual Tree gehen müssen.Wie bekomme ich die Standard-Tab-Reihenfolge in WPF (d. H. Visual Tree-Reihenfolge)?

Mein Validierungsmodul erhält nur eine Reihe von zu validierenden Steuerelementen. Es muss von oben nach unten sortiert werden, damit der Benutzer das Formular sequenziell durchlaufen kann. Ich möchte das ursprüngliche Tabbing-Verhalten beibehalten. Ich muss nur die visuelle Reihenfolge der Steuerelemente in meiner Liste kennen, damit ich sie richtig sortieren kann.

+0

Haben Sie versucht, alle Steuerelemente aufzurufen und dann ihren aktuellen Tabindex zu bekommen? Wenn ja, was hast du noch versucht? –

+0

Wenn nicht explizit festgelegt, wird der aktuelle Registerkartenindex auf Int Max gesetzt, was bedeutet, dass die Reihenfolge der visuellen Struktur lautet. Ja, ich habe es versucht. – NielW

Antwort

0

Nach ein paar Tagen der Forschung, realisierte ich, dass dies nicht out of the Box zur Verfügung gestellt wird. Am Ende habe ich gerade FindVisualChildren aufgerufen, um alle FrameworkElements zu erhalten, und wenn das Steuerelement meine IValidatable-Schnittstelle implementiert hat, habe ich ihm den nächsten verfügbaren Index von einem Zähler zugewiesen. Ich musste eine Abhängigkeitseigenschaft namens Order hinzufügen, damit es funktioniert (ich wollte nicht mit dem vorhandenen TabIndex meckern). Als ich dann meine Liste der zu validierenden Steuerelemente erhielt, sortierte ich sie einfach nach Bestellung.

Dies ist definitiv keine skalierbare Lösung, aber glücklicherweise muss ich es nur einmal ausführen.

Wenn jemand eine bessere Lösung hat, bitte posten es. Ich fühle mich dreckig.