I'm trying to focus my SelectedItem with ScrollIntoView but it won't work because of the virtualization
Here is my code on the SelectionChanged method
AnimalDataGrid.Focus();
if (AnimalDataGrid.Items.Count == 0) return;
var index = AnimalDataGrid.SelectedIndex;
if (index < 0) return;
Action action = () =>
{
AnimalDataGrid.ScrollIntoView(AnimalDataGrid.SelectedItem);
var item = AnimalDataGrid.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
if (item == null) return;
item.Focus();
};
Dispatcher.BeginInvoke(DispatcherPriority.Background, action);
Here is my datagrid
<DataGrid x:Name="AnimalDataGrid" Margin="0,0,0,4" MinHeight="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Standard"
SelectedItem="{lcwd:ExtendedBinding Path=SelectedAnimal, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{lcwd:ExtendedBinding Path=AnimalList, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True"
SelectionChanged="AnimalDataGrid_SelectionChanged"
Sorting="AnimalDataGrid_Sorting">