1

在很多情况下,您需要 TextBox 高度是静态的(即其默认值)。问题是当用户被允许在提供的滚动方法中放入无限的字符串时,它不是那么友好。

到目前为止,我设法做的是:

<ScrollViewer x:Name="Scroller" MaxWidth="416" HorizontalScrollBarVisibility="Hidden">
    <TextBox x:Name="Tb" TextChanged="TextBox_OnTextChanged" Background="{x:Null}" FontSize="25" MaxWidth="2048"/>
</ScrollViewer>

以及背后的代码:

    private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e)
    {
         // if cursor is at the end of the text, scroll the ScrollViewer to the end 
        if (Tb.SelectionStart == Tb.Text.Length)
        {
            Scroller.ScrollToVerticalOffset(Tb.ActualHeight);
            return;
        }

        // else scroll to the appropriate spot
        if (!((Tb.SelectionStart * (Tb.ActualWidth / Tb.Text.Length) - Scroller.HorizontalOffset) < Scroller.ViewportWidth))
        {
            Scroller.ScrollToHorizontalOffset((Tb.SelectionStart) * (Tb.ActualWidth / Tb.Text.Length) - (Scroller.ViewportWidth - 55));
        }
    }

然而,这还不稳固。当 Tb.ActualWidth 达到其限制并且在文本中间移动插入符号时的滚动体验与 Bing 搜索框不同时,它会出现问题。

有没有办法在 Windows Phone 8 上添加与 Bing 搜索框或 IE 中的地址栏相同的功能?

4

0 回答 0