2017-08-11 1 views
1

Ich habe eine AutoSuggestBox, die Eingabe groß schreiben müssen, während der Benutzer es eingibt. Das Problem ist, dass wenn ich den Text auf Caps setze, der Cursor an das Ende des Endes des Textes bewegt wird. Ich muss den Standort des Cursors bestimmen, bevor ich den Text ändere und die Auswahl danach festlege.Wie lege ich die Position des Textcursors in einer AutoSuggestBox fest?

In Android würde ich die SelectionStart und SetSelection-Funktionen dafür verwenden, aber AutoSuggestBox scheint nichts dergleichen zu haben. TextBox hat eine SelectionStart- und SelectionLength-Eigenschaft und eine Select-Funktion. Vielleicht hat AutoSuggestBox eine TextBox für ein Kind, auf das ich irgendwie zugreifen muss?

Antwort

2

Viele TextBox-Eigenschaften und -Methoden werden nicht über AutoSuggestBox verfügbar gemacht. Sie können mit so etwas wie das TextBox innerhalb der Steuervorlage greifen:

TextBox textBox = this.AutoSuggestBox.GetDescendants<TextBox>().FirstOrDefault(); 

GetDescendants(), in diesem Fall ist nur eine Hilfsfunktion, die den Baum zu kriechen sucht den angegebenen Typ Vorteil VisualTreeHelper nimmt (wegabstrahiert der Einfachheit halber).

Im Idealfall würden Sie dies in OnApplyTemplate() tun, aber da AutoSuggestBox versiegelt ist, können Sie diese Methode nicht überschreiben. Je nachdem, wie Sie Ihre UI strukturieren und wenn Sie Zugriff auf die TextBox benötigen, müssen Sie explizit einen Aufruf an UpdateLayout() machen, um sicherzustellen, das TextBox über GetDescendants() mit verfügbar:

this.AutoSuggestBox.UpdateLayout(); 
+0

Dank dies funktioniert, wenn ich gebraucht Fügen Sie ein Nuget-Paket mit dem Namen WinRTXamlToolkit hinzu, bevor ich Zugriff auf die Nachkommen hatte. – Slepz

Verwandte Themen