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>
/// <summary>
        /// 自动滑到底部,具体可以按照滚轮方式进行选取位置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MessageGrid_Loaded(object sender, RoutedEventArgs e)
        {
            scroll.ScrollToEnd();//最后一行
            scroll.ScrollToHome();//第一行
            scroll.ScrollToLeftEnd();//第一列
            scroll.ScrollToRightEnd();//最后一列
        }

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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF MVVM 中处理 DataGrid 数据有几个步骤: 1. 创建一个 ViewModel 类来管理 DataGrid 的数据。这个 ViewModel 类应该实现 INotifyPropertyChanged 接口,以便在数据改变时通知 View 更新。 2. 在 XAML 中创建 DataGrid 控件,并绑定到 ViewModel 的数据属性。可以使用 ItemsSource 属性将数据集合绑定到 DataGrid。 3. 在 ViewModel 中创建一个数据集合属性,用于存储 DataGrid 的数据。这个属性应该是一个 ObservableCollection<T> 类型,其中 T 是 DataGrid 中每一行的数据模型类。 4. 在 ViewModel 中,通过命令或其他方式获取要显示在 DataGrid 中的数据,并将其添加到数据集合属性中。 5. 可以使用数据绑定和转换器来设置 DataGrid 的列样式和格式。例如,可以使用 DataGridTextColumn 来显示文本数据,或者使用 DataGridTemplateColumn 来自定义列。 6. 在 ViewModel 中,可以处理 DataGrid 中的用户交互事件,例如选中行或编辑单元格。可以使用命令来处理这些事件,并在需要时更新数据集合属性。 7. 可以在 ViewModel 中添加一些数据处理逻辑,例如排序、过滤或分页。可以通过操作数据集合属性来实现这些功能,并通过绑定更新 DataGrid。 总的来说,WPF MVVM 中处理 DataGrid 数据需要创建一个 ViewModel 类来管理数据,并通过数据绑定将其与 DataGrid 控件关联起来。然后,在 ViewModel 中处理数据的增删改查操作,并使用命令和事件处理来实现用户交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值