在许多情况下,您需要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的IE中添加与Bing搜索框或地址栏相同的功能?