WPF七(DataGrid 滑轮滚动事件多种处理方式)

最近在做项目时,针对DataGrid标签本身和ScrollViewer内嵌DataGrid都有添加滚轮需求,自己也研究了一下,针对此做出以下总结:

一:当没有ScrollViewer在DataGrid本身进行添加滚轮事件时

<DataGrid ItemsSource="{Binding TestList}" VerticalScrollBarVisibility="Auto">
</DataGrid>

只需要添加VerticalScrollBarVisibility="Auto"属性即可进行触发

二:当在ScrollViewer内嵌DataGrid进行添加滚轮事件时,上诉方式不生效,因为滚轮滚动时在DataGrid本身,而ScrollViewer属性在外面(具体在外面是有具体的业务场景,此处不进行细说)。此时需要添加滚轮事件
第一种方法:

<ScrollViewer    x:Name="Scroll" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
<DataGrid ItemsSource="{Binding TestList}" VerticalScrollBarVisibility="Auto" Name="Test">
</DataGrid>
</ScrollViewer>
在xaml.cs构造函数处加载
Test.PreviewMouseWheel += (sender, e) =>
            {
                var eventArg = new System.Windows.Input.MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
                eventArg.RoutedEvent = System.Windows.UIElement.MouseWheelEvent;
                eventArg.Source = sender;
                this.Test.RaiseEvent(eventArg);
            };

第二种方法

<ScrollViewer    x:Name="Scroll" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
<DataGrid ItemsSource="{Binding TestList}" VerticalScrollBarVisibility="Auto" Name="Test" Loaded="MessageGrid_Loaded">
</DataGrid>
</ScrollViewer>
/// 
        /// 自动滑到底部,具体可以按照滚轮方式进行选取位置
        /// 
        /// 
        /// 
        private void MessageGrid_Loaded(object sender, RoutedEventArgs e)
        {
            scroll.ScrollToEnd();//最后一行
            scroll.ScrollToHome();//第一行
            scroll.ScrollToLeftEnd();//第一列
            scroll.ScrollToRightEnd();//最后一列
        }

如果对您有帮助,请关注一波,帮博主涨涨人气,谢谢

你可能感兴趣的:(wpf)