繁体   English   中英

如何设置文本框插入符号到文本结尾的位置?

[英]How to setup textbox caret position to end of text?

我在该框架内有带有框架和页面的窗口。

该页面具有一个TextBox,当有人开始向该TextBox写入内容时,我想将该框架导航至另一页面(类似于google搜索,当您开始编写时搜索结果立即出现在不同的视图上)。

我现在对两个Page对象使用相同的DataContext,因此它们都可以读取属性searchedText的值,该属性已绑定到每个Page上的TextBox。

页面Search.xml:

<Page x:Class="Customer_UI.Search"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
      Title="Search">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBox Name="searchBox" Grid.Column="0" Grid.Row="0" Margin="30" FontSize="28" Padding="10" TextAlignment="Center" VerticalAlignment="Center" BorderThickness="5" KeyUp="TextBox_KeyUp" Text="{Binding Path=SearchedCustomer}" >
        </TextBox>
    </Grid>
</Page>

搜索代码背后:

namespace Customer_UI
{
    public partial class Search : Page
    {
        private void TextBox_KeyUp(object sender, KeyEventArgs e)
        {
            SearchExpanded searchExpanded = new SearchExpanded();
            searchExpanded.DataContext = this.DataContext;
            (this.DataContext as MainWindow.MainWindowContext).MainWindow.MainFrame.Navigate(searchExpanded);
            searchExpanded.FocusSearchBox();
        }
    }
}

页面SearchExpanded.xml:

<Page x:Class="Customer_UI.SearchExpanded"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
      Title="SearchExpanded">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBox Name="searchBox" Grid.Column="0" Grid.Row="0" FontSize="18" Padding="10" TextAlignment="Center" VerticalAlignment="Center" BorderThickness="5" Text="{Binding Path=SearchedCustomer}" >
        </TextBox>
    </Grid>
</Page>

Search后面的扩展代码:

namespace Customer_UI
{
    public partial class SearchExpanded : Page
    {
        public void FocusSearchBox() 
        {   
            MainWindow.MainWindowContext dc = DataContext as MainWindow.MainWindowContext;
            // this has no output, the input from TextBox on Page that causes navigation to this page is probably still not reflected to dataContext.searchedCustomer property
            Console.WriteLine(dc.SearchedCustomer);

            // problem is that this time dc.SearchedCustomer has still lenght zero

            searchBox.Focus();
        }
    }
}

将SelectionStart属性设置为文本的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM