Realização atual
Olá. Atualmente tenho o seguinte aplicativo:
Se você pode ver, quando meu cursor está na zona azul ou vermelha, estou rolando apenas o ScrollViewer principal.
Expectativas
Estou esperando que se eu rolar com o cursor no DataGrid, deve rolar apenas o DataGrid. Não é o ScrollViewer principal. Mas atualmente funciona como a seguinte demonstração:
Pergunta
Como posso habilitar a possibilidade de rolar o DataGrid no ScrollViewer?
Código atual
<ScrollViewer x:Name="ScrollViewer" PanningMode="Both" Background="Blue"
HorizontalScrollBarVisibility="Auto" Padding="0,0,50,0"
VerticalScrollBarVisibility="Auto" PreviewMouseWheel="DataGrid_PreviewMouseWheel">
<StackPanel>
<DataGrid x:Name="DataGrid0" ItemsSource="{Binding Items}" Height="300"
AutoGenerateColumns="True" PreviewMouseWheel="DataGrid_PreviewMouseWheel"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"/>
<Rectangle Height="200" Fill="Red"/>
<DataGrid x:Name="DataGrid1" ItemsSource="{Binding Items}" Height="300"
AutoGenerateColumns="True" PreviewMouseWheel="DataGrid_PreviewMouseWheel"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"/>
</StackPanel>
</ScrollViewer>
private void DataGrid_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
var args = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
args.RoutedEvent = ScrollViewer.MouseWheelEvent;
if (e.Source is DataGrid)
{
DataGrid0.RaiseEvent(args);
}
else
{
ScrollViewer.RaiseEvent(args);
}
}
Remova o evento PreviewMouseWheel do Scrollviewer e DataGrid também.