前端:
<DataGrid x:Name="dg" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Width="200" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding }" Height="60" FontSize="18" TextAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
切记不要设置以下属性,否则不会一滚一行
ScrollViewer.CanContentScroll="False"
后台:
DispatcherTimer timer;
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 1); //时间间隔为一秒
timer.Tick += Timer_Tick;
}
ScrollViewer sv1;
double offset = 0;
private void Timer_Tick(object sender, EventArgs e)
{
offset++;
sv1.ScrollToVerticalOffset(offset);
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
sv1 = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this.dg, 0), 0) as ScrollViewer;
sv1.ScrollChanged += Sv1_ScrollChanged;
List<string> list = new List<string>();
for (int i = 0; i < 100; i++)
{
list.Add("aa" + i.ToString());
}
dg.ItemsSource = list;
timer.Start();
}
private void Sv1_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (e.VerticalOffset + e.ViewportHeight == e.ExtentHeight && e.ViewportHeight != 0)
{
offset = 1;
}
}