目前的实现
你好呀。目前我有以下应用程序:
如果您可以看到,当我的光标位于蓝色或红色区域时,我仅滚动主 ScrollViewer。
期望
我期望如果我在 DataGrid 上滚动光标,则应该仅滚动 DataGrid。不是主要的 ScrollViewer。但目前它的工作原理如下演示:
问题
如何启用在 ScrollViewer 上滚动 DataGrid 的功能?
当前代码
<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);
}
}
也从 Scrollviewer 和 DataGrid 中删除 PreviewMouseWheel 事件。