【问题标题】:How do I set the location of the the text cursor in an AutoSuggestBox?如何在 AutoSuggestBox 中设置文本光标的位置?
【发布时间】:2017-08-12 06:57:29
【问题描述】:

我有一个AutoSuggestBox,需要在用户键入时将输入大写。问题是当我将文本设置为大写时,光标会移动到文本末尾。我需要在更改文本之前确定光标的位置并在之后设置选择。

在 Android 中,我会为此使用 SelectionStart 和 SetSelection 函数,但 AutoSuggestBox 似乎没有类似的功能。 TextBox 有一个 SelectionStart 和 SelectionLength 属性以及一个 Select 函数。也许 AutoSuggestBox 有一个我需要以某种方式访问​​的孩子的 TextBox?

【问题讨论】:

    标签: c# uwp uwp-xaml


    【解决方案1】:

    许多 TextBox 属性和方法没有通过 AutoSuggestBox 公开。您可以使用以下内容获取控件模板中的 TextBox:

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

    GetDescendants(),在这种情况下,只是一个辅助函数,它利用VisualTreeHelper 来爬取树以查找指定的类型(为简单起见,被抽象掉了)。

    理想情况下,您应该在OnApplyTemplate() 中执行此操作,但由于 AutoSuggestBox 是密封的,因此您无法覆盖此方法。根据您构建 UI 的方式以及何时需要访问 TextBox,您可能需要显式调用 UpdateLayout() 以确保 TextBox 可通过 GetDescendants() 使用:

    this.AutoSuggestBox.UpdateLayout();
    

    【讨论】:

    • 感谢这项工作,但我需要添加一个名为 WinRTXamlToolkit 的 nuget 包,然后才能访问后代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2015-04-08
    • 2011-03-14
    • 2023-03-15
    相关资源
    最近更新 更多