【发布时间】:2020-03-28 12:28:50
【问题描述】:
我正在开发一个使用大量文本框的应用程序。如果他们获得焦点,插入符号位于文本框的第一个位置。即使已经存在文本。 当他们获得焦点时,我正在寻找一个解决方案,以便在所有 Texbox 的文本末尾设置插入符号。
我知道,我可以处理 GotFocus()-Event,然后手动设置位置。但是有更聪明的解决方案吗?
【问题讨论】:
我正在开发一个使用大量文本框的应用程序。如果他们获得焦点,插入符号位于文本框的第一个位置。即使已经存在文本。 当他们获得焦点时,我正在寻找一个解决方案,以便在所有 Texbox 的文本末尾设置插入符号。
我知道,我可以处理 GotFocus()-Event,然后手动设置位置。但是有更聪明的解决方案吗?
【问题讨论】:
如你所说,最简单的方法是使用事件处理程序。
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
textBox.CaretIndex = textBox.Text.Length;
}
然后将此事件处理程序分配给每个TextBox。
通用TextBox 中的CaretIndex 不是属性。因此,更智能的解决方案至少需要创建一个继承自TextBox 的自定义控件。您可以通过这种方式将CaretIndex 设为属性。然后只需在 xaml 中使用 Style.Triggers 和属性 IsFocused。
【讨论】: