wpf - 将插入符号/光标位置设置为字符串值 WPF 文本框的末尾

标签 wpf textbox caret cursor-position

当我第一次打开窗口时,我尝试将插入符号/光标位置设置为 WPF 文本框中字符串值的结尾。当窗口打开时,我使用 FocusManager 将焦点设置在文本框上。

似乎没有什么效果。有什么想法吗?

请注意,我使用的是 MVVM 模式,并且我的代码中仅包含了部分 XAML。

<Window 
    FocusManager.FocusedElement="{Binding ElementName=NumberOfDigits}"
    Height="400" Width="800">

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <TextBox Grid.Column="0" Grid.Row="0" 
                 x:Name="NumberOfDigits"
                 IsReadOnly="{Binding Path=IsRunning, Mode=TwoWay}"
                 VerticalContentAlignment="Center"
                 Text="{Binding Path=Digits, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        <Button Grid.Column="0" Grid.Row="1" 
                 Margin="10,0,10,0"
                 IsDefault="True"
                 Content="Start" 
                 Command="{Binding StartCommand}"/>
    </Grid>
 </Window>

最佳答案

您可以使用 TextBoxCaretIndex 属性设置插入符位置。请记住,这不是 DependencyProperty。尽管如此,您仍然可以在 XAML 中设置它,如下所示:

<TextBox Text="123" CaretIndex="{x:Static System:Int32.MaxValue}" />

请记住设置 CaretIndex after Text 属性,否则它将不起作用。因此,如果您像示例中那样绑定(bind)到 Text ,它可能不起作用。在这种情况下,只需使用像这样的代码隐藏即可。

NumberOfDigits.CaretIndex = NumberOfDigits.Text.Length;

关于wpf - 将插入符号/光标位置设置为字符串值 WPF 文本框的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2888907/

相关文章:

c# - wpf 中的 ItemsPanelTemplate 选择器?

c# - 如何在运行时正确清除 Awesomium.NET WPF 1.7.1 上的缓存

.net - 无法检测绑定(bind)到 EF 导航属性 MVVM 的 Datagrid 记录的更改(与 ListView 一起使用)

java - 在 TextArea Java 中移动文本光标

delphi - 如何在 Firemonkey 中的 TEdit 中隐藏插入符号?

java - 如何覆盖 DefaultCaret#setBlinkRate()

c# - 如何将线程异常传播回应用程序异常处理程序

.net - 文本框拉伸(stretch)问题

php - 如何填充我的文本框?

vba - Excel:对象文本框无法在 protected 与不 protected 工作表状态(带文本解锁)中执行回车...为什么?