博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataGrid后台实现选中某一行,并滚动到当前选中项
阅读量:4092 次
发布时间:2019-05-25

本文共 2075 字,大约阅读时间需要 6 分钟。

定义一个DataGrid

注意:  一定要设置VirtualizingStackPanel.IsVirtualizing="False"

///         /// 将SelectedItem滚动为第一行        ///         /// 目标DagaGrid        /// 选中项        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.Focus();            dg.SelectedItem = selectedItem;            dg.CurrentColumn = dg.Columns[0];            dg.ScrollIntoView(dg.SelectedItem, dg.CurrentColumn);        }        ///         /// 获取选中的行        ///         ///         ///         /// 
public static DataGridRow GetDataGridRow(DataGrid datagrid, int rowIndex) { DataGridRow row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); if (row == null) { datagrid.UpdateLayout(); row = (DataGridRow)datagrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); row.IsSelected = true; } return row; }

在代码中使用这两个函数

resultDataGrid.SelectedItem = item;                    DataGridRow resRow = GetDataGridRow(resultDataGrid, (int)item.ID);                    resRow.IsSelected = true;                    SetSelectedItemFirstRow(resultDataGrid,resultDataGrid.SelectedItem);                    resultDataGrid.UpdateLayout();

参考:

转载地址:http://hkiii.baihongyu.com/

你可能感兴趣的文章
TypeScript躬行记(8)——装饰器
查看>>
利用Redis实现集群或开发环境下SnowFlake自动配置机器号
查看>>
node多进程的创建与守护
查看>>
react-native-swiper使用的坑
查看>>
BeetleX之XRPC使用详解
查看>>
Kerrigan:配置中心管理UI的实现思路和技术细节
查看>>
Python综合应用:教你用字符打印一张怀旧风格的照片
查看>>
Cocos Creator | 飞刀大乱斗开发教程系列(一)
查看>>
abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之七(三十三)
查看>>
做为一个菜鸡的2019年总结
查看>>
spring注解之@Import注解的三种使用方式
查看>>
Autofac总结
查看>>
深入浅出 Viewport 设计原理
查看>>
老板让阿粉学习 flink 中的 Watermark,现在他出教程了
查看>>
JavaScript 构造树形结构的一种高效算法
查看>>
使用Theia——构建你自己的IDE
查看>>
消失的这几个月我都干了什么
查看>>
.NET Core 3 WPF MVVM框架 Prism系列之命令
查看>>
索引-建立框架篇
查看>>
FPGA之IO信号类型深入理解
查看>>