public class DataGridAutoScrollBehavior:Behavior<DataGrid> { protected override void OnAttached() { base.OnAttached(); AssociatedObject.SelectionChanged += AssociatedObject_SelectionChanged; } private void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e) { var dg= sender as DataGrid; if (dg!=null && dg.SelectedItem!=null) { dg.ScrollIntoView(dg.SelectedItem); } } protected override void OnDetaching() { base.OnDetaching(); AssociatedObject.SelectionChanged -= AssociatedObject_SelectionChanged; } } <Window x:Class="WpfApp47.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:behavior="http://schemas.microsoft.com/xaml/behaviors" WindowState="Maximized" xmlns:local="clr-namespace:WpfApp47" mc:Ignorable="d" Title="{Binding SelectedBk.ISBN}" Height="450" Width="800"> <Window.DataContext> <local:BookVM/> </Window.DataContext> <Grid> <DataGrid ItemsSource="{Binding BooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedBk,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedIndex="{Binding SelectedIdx,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" CanUserAddRows="False" VirtualizingPanel.IsContainerVirtualizable="True" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.CacheLength="1" VirtualizingPanel.CacheLengthUnit="Item"> <behavior:Interaction.Behaviors> <local:DataGridAutoScrollBehavior/> </behavior:Interaction.Behaviors> <DataGrid.Columns> <DataGridTemplateColumn Header="Image"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <local:ImgTbk UCImgSource="{Binding DataContext.ImgSource, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}}" UCStr="{Binding DataContext.ISBN, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </Grid> </Window>
标签:via,dg,void,AssociatedObject,SelectionChanged,Datagrid,OnAttached,AutoScroll,WPF From: https://www.cnblogs.com/Fred1987/p/18571151