将DataGrid的SelectedItem滚动到第一行(WPF)

2024-01-21 23:20

本文主要是介绍将DataGrid的SelectedItem滚动到第一行(WPF),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    距离第一次发博客过去了很久,期间感悟很多,也忙碌了许多。匆匆忙忙就过去了,恰巧今天一个刚转到WPF的朋友问了我一个问题:如何让DataGrid中的滚动条自动滚动到想要的行恰巧位于第一行的位置。想了下,确实很多时候需要用到这样的操作,例如在DataGrid大量数据中搜索关键数据,然后将结果行定位,是滚动条滚动到结果位于首行。于是便开始了琢磨探索,搜索一个满意的solution。

    为了方便易懂,特意做了一个小例子方便大家理解效果图。这里是动态图链接,更方便易懂的展示效果。



    开始时不如人意,最后收到MSDN论坛一位提问者的启发:将滚轮定位到目标行能显示的位置。遗憾的是目标行显示的位置并不在第一行。然后动了下脑筋,算是解决了这个问题。

    下面是个人的solution,整理后的方法,可以在ViewModel中直接使用,需在CommandParameter中将目标DataGrid传给ViewModel,其他的没什么难点,基本bug都考虑到了。总体效果还行,希望有人能提出更好的方案,共同进步。O(∩_∩)O大笑

        /// <summary>/// 将SelectedItem滚动为第一行/// </summary>/// <param name="dataGrid">目标DagaGrid</param>/// <param name="selectedItem">选中项</param>public static void SetSelectedItemFirstRow(object dataGrid, object selectedItem){//若目标datagrid为空,抛出异常if (dataGrid == null){throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid");}//获取目标DataGrid,为空则抛出异常System.Windows.Controls.DataGrid dg = dataGrid as System.Windows.Controls.DataGrid;if (dg == null){throw new ArgumentNullException("目标无" + dataGrid + "无法转换为DataGrid");}//数据源为空则返回if (dg.Items == null || dg.Items.Count < 1){return;}//首先滚动为末行dg.SelectedItem = dg.Items[dg.Items.Count - 1];dg.CurrentColumn = dg.Columns[0];dg.ScrollIntoView(dg.SelectedItem, dg.CurrentColumn);//获取焦点,滚动为目标行dg.Focus();dg.SelectedItem = selectedItem;dg.CurrentColumn = dg.Columns[0];dg.ScrollIntoView(dg.SelectedItem, dg.CurrentColumn);}


这篇关于将DataGrid的SelectedItem滚动到第一行(WPF)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631136

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相

第一行代码学习笔记:关于BroadcastReceiver的实现方式

第一行代码学习笔记:关于BroadcastReceiver的实现方式 方法1 动态注册方法2 发送广播时设置intent.setComponent方法3 发送广播时设置intent.addFlags 最近在学习郭霖大神的第一行代码第二版,在进行自定义广播部分的实例练习时发现点击按钮后未能接收到广播消息,经过代码排查和度娘查询才知道原来是8.0版本开始已经不支持大部分的静态注册广播

【Unity-Lua】音乐播放器循环滚动播放音乐名

前言:Unity中UI节点 图1 如上所示,一开始本来是打算用ScrollView做的,觉得直接计算对应的文本位置就行,所以没用ScrollRect来做,可以忽略Scroll,Viewport这些名字。如下图:需要在一个背景Image组件上添加上Mask组件来显示固定位置的文本显示。 图2 图3 并且需要在要显示的文本上挂载Content Size Filter组件,但是这儿会有个坑

POM文件第一行报错org.apache.maven.archiver.MavenArchiver.getManifest

前几天新建maven项目时,系统自动生成的POM文件第一行总是报错 org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 百思不得其解,明明是自动生成的怎么还会有

WebAPI(二)、DOM事件监听、事件对象event、事件流、事件委托、页面加载与滚动事件、页面尺寸事件

文章目录 一、 DOM事件1. 事件监听2. 事件类型(1)、鼠标事件(2)、焦点事件(3)、键盘事件(4)、文本事件 3. 事件对象(1)、获取事件对象(2)、事件对象常用属性 4. 环境对象 this5. 回调函数 二、 DOM事件进阶1. 事件流(1)、 捕获阶段(2)、 冒泡阶段(3)、 阻止冒泡(4) 、阻止元素默认行为(5) 、解绑事件 2. 事件委托3. 其他事件(1)、页面加

【Android】NestedScrollView的简单用法与滚动冲突、滑动冲突

一、NestedScrollView 1. 什么是 NestedScrollView NestedScrollView 是 Android 中一个用于处理垂直方向滚动的布局组件,它继承自 FrameLayout,同时支持嵌套滑动(Nested Scrolling)机制。相比于传统的 ScrollView,NestedScrollView 专为解决嵌套滚动冲突问题设计,能够与其他支持嵌套滑动的子

C# WPF燃气报警器记录读取串口工具

C# WPF燃气报警器记录读取串口工具 概要串口帧数据布局文件代码文件运行效果源码下载 概要 符合国标文件《GB+15322.2-2019.pdf》串口通信协议定义;可读取燃气报警器家用版设备历史记录信息等信息; 串口帧数据 串口通信如何确定一帧数据接收完成是个麻烦事,本文采用最后一次数据接收完成后再过多少毫秒认为一帧数据接收完成,开始解析出来。每次接收到数据更新一次re

Jquery实现广告滚动

当页面的滚动条上下移动时,飘浮广告随着滚动条的滚动而上移或者下移,要明白两点,第一:放广告的层最好采用绝对定位,它的位置应该随着滚动条的改变而上下移动,滚动条的滚动促发的是onscroll事件,广告条所在的层的top值就是滚动条的高度,具体代码如下: <html><head><meta http-equiv="Content-Type" content="text/html; charset