此问题仅发生在vista和xp上。发生的事情是,如果有一个文本框有很多文本并且部分离开屏幕而你点击它,wpf会将其滚动到视图中并突出显示文本。在Windows 7中,它不会将其滚动到视图中。我正在使用.net 4并尝试清除文本框的接收焦点,键盘焦点和鼠标捕获事件的选择,但滚动似乎发生在那之后。我已经包含了一些我正在讨论的屏幕截图以及一个演示该问题的测试应用程序。
在点击任何内容之前,在下一个屏幕截图中,我所做的就是点击第6行
点击第6行后,您可以看到所有内容都突出显示,因为它将文本框滚动到视图中。
REPRO:
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (int i = 1; i < 1000; i++)
{
textBox3.AppendText(string.Format("line {0}\r\n", i));
}
}
}
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" MaxHeight="350" MaxWidth="525">
<Grid>
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="this is some text"></TextBox>
<TextBox Grid.Row="1" Text="this is some text"></TextBox>
<TextBox Grid.Row="2" ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto" AcceptsReturn="True"
x:Name="textBox3"></TextBox>
</Grid>
</ScrollViewer>
</Grid>
</Window>
答案 0 :(得分:0)
原告微软认为这是.net 3.5中的一个已知问题,它们已在.net 4.0中修复。他们没有解决方法。