2017-08-11 124 views
1

我有一個AutoSuggestBox需要大寫輸入,而用戶輸入它。問題是當我將文本設置爲大寫字母時,光標將移動到文本末尾。在更改文本並在之後設置選擇之前,我需要確定光標的位置。如何在AutoSuggestBox中設置文本光標的位置?

在Android中,我會爲此使用SelectionStart和SetSelection函數,但AutoSuggestBox似乎沒有這樣的東西。 TextBox具有SelectionStart和SelectionLength屬性和一個選擇功能。也許AutoSuggestBox有一個我需要以某種方式訪問​​的孩子的TextBox?

回答

2

許多TextBox屬性和方法不通過AutoSuggestBox公開。你可以抓住的控制模板中的文本框的東西,如:

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

GetDescendants(),在這種情況下,僅僅是一個輔助函數,它的VisualTreeHelper優勢抓取樹,查找指定的類型(抽象化了的簡單)。

理想情況下,您可以在OnApplyTemplate()中執行此操作,但由於AutoSuggestBox已密封,因此無法重寫此方法。這取決於你如何組織你的UI,當你需要訪問文本框,你可能需要明確地撥打電話,以UpdateLayout()確保文本框通過GetDescendants()是可用:

this.AutoSuggestBox.UpdateLayout(); 
+0

感謝這個作品,但我需要添加一個名爲WinRTXamlToolkit的Nuget包,然後才能訪問子代。 – Slepz