首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

WPF DataGrid 如何将被选中行带到视野中

WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGrid...而还有一种情况,我们可能在业务逻辑中,由程序自己选中了某一行,如果这一行当前不在用户界面的可视区(换句话说也就是滚动条没有滚到那个位置),那么我们如何将其带到用户的视野中呢?...使用的还是之前用过的 DataGrid 的 Demo 程序(在《WPF DataGrid 通过自定义表头模拟首行固定》和《WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题》中用过),加了一个可以填写要选中的行号的文本框...,以及一个执行选中操作的按钮: 下面来演示一下没有自动将选中行带到视野中的情况。...我们先将数据添加到 10 条,然后缩小程序的窗口,这样有些数据就在滚动区外面了,也就是不在视野中。

1.8K10

Newbeecoder.UI新版开源控件库DataGrid使用说明

DataGrid控件显示数据和信息的集合。在WPF能自定义外观,单元格,表格头部,字体,颜色等内容。 使用ItemsSource属性进行数据源绑定,绑定任何实现IEnuemerable的数据源。...默认情况下,当用户单击DataGrid中的单元格时会选择整行,如果用户选择多行设置SelectionMode属性。假如不想生成自动列使用AutoGenerateColumns属性设置为false。...Microsoft Docs对DataGrid每项功能有详细说明。 在样式中有常见的表格选项,如交替行背景和显示/隐藏标题,网格线和滚动条。...Newbeecoder.UI是一个轻量级和扩展性的开源项目,基于MVVM开发框架,可用来快速搭建WPF应用程序,而无需了解控件内部实现细节,方便扩展更多控件样式以及使用,该项目使用纯C#+WPF开发,易于扩展和集成到开发项目中...只要你的已有系统是使用WPF开发的,你都能够使用Newbeecoder.UI来轻易的开发出你好看的应用程序来集成到你的现有项目之中。

2.8K30

如何在DataGrid里面产生滚动条而不滚动题头

我们在开发的时候一定遇到,使用DataGrid的时候由于不想分页(数据没有那么多)但是又显示不在一页里面,此时我们希望在DataGrid里面出现一个滚动条,可以上下滚动DataGrid里面的数据而不用上下滚动页面...,由于写本文的目的是为了说明如何实现,所以对于细节性的问题读者可以自己思考完成(比如:既要分页又要滚动等等)。...为了可以滚动DataGrid我们需要一个可以让客户端的Table滚动js脚本(该js代码我是从CodeProject上面下载的),但又不能滚动Table的题头(也就是第一行)。...DataGrid的,所以我们现在的这个控件在不用写一行代码的情况下我们的这个控件已经具有DataGrid的所有的功能。...好了,客户端脚本也有了,剩下的就是处理我们的客户端DataGrid了(也就是DataGrid呈现的客户端Table)。

1.5K110

WPF --- 如何重写WPF原生控件样式?

引言 上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生的 DataGrid 的样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。...重写过程中,遇到了两个问题: 如何获取 「WPF」 原生的 DataGrid 的样式? 滚动条样式中,如何固定滚动条长度? 本篇文章分享一下这两个问题的解决办法。...问题1 第一个,如何获取 「WPF」 原生的 DataGrid 的样式?...这个问题不限于原生的 DataGrid 的样式,其他的一些样式比如 checkBox,RadioButton, ComboBox等。这些控件对于一些初学者来说,很难理解他是怎么实现的。...问题2 第二个问题, 滚动条样式中,如何固定滚动条长度? 在原生的滚动条样式中,纵方向上的滚动条的高度是跟随你窗口的大小和内容的多少而改变的,窗口大内容少,滚动条的高度就越大,反之亦然。

28020

WPF --- 触摸屏下的两个问题

引言 本篇文章分享一下之前遇到的WPF应用在触摸屏下使用时的两个问题。...期间遇到了两个问题: WPF在触摸屏下,如果有滚动条(ScrollViewer)的情况下,默认包含触底反馈的功能,就是触摸屏滑动到底或从底滑到顶,界面都会出现抖动的情况。...触摸屏下,当触点处于 DataGrid 中时,无法滚动界面。...触点在DataGrid中无法滚动的问题 这个问题,其实不光在 DataGrid中有,触点在 TextBox 、ListView、ListBox,这一类内置有 ScrollViewer 的控件内,都有同样的问题...中时,使用滑轮界面无法滚动的问题,那么解决触摸屏触点在 DataGrid 中无法滚动的问题,也是一样的思路,根据触点的偏移量,模拟鼠标滚轮的偏移量,在调用鼠标滚动事件,模拟滚动,代码如下: private

10810

WPF 开启 ScrollViewer 的触摸滚动

在 ScrollViewer 如果需要收到触摸消息,通过 Manipulation 触摸滚动,不能只是通过设置 IsManipulationEnabled 方法,还需要设置 PanningMode 才可以...那么如何知道滚动条的触摸事件是否触发,可以写一个类继承滚动条 public class StisvearpaHudalserevow : ScrollViewer {...base.OnManipulationStarted(e); } } 在界面添加这个类,如果有触摸输入就可以通过输出看到了,简单一个界面,可以看到默认的滚动条是不能滚动的...在我博客 WPF 拖动滚动 告诉大家通过 PanningMode 的方法可以让滚动滚动 只要在初始的过程设置了 PanningMode 因为在代码里面通过 InvalidateProperty 重新设置...false 触发 OnManipulationCompleted 同时触发之后也没有触摸 ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF

3.3K20

WPF 开启 ScrollViewer 的触摸滚动

在 ScrollViewer 如果需要收到触摸消息,通过 Manipulation 触摸滚动,不能只是通过设置 IsManipulationEnabled 方法,还需要设置 PanningMode 才可以...那么如何知道滚动条的触摸事件是否触发,可以写一个类继承滚动条 public class StisvearpaHudalserevow : ScrollViewer {...base.OnManipulationStarted(e); } } 在界面添加这个类,如果有触摸输入就可以通过输出看到了,简单一个界面,可以看到默认的滚动条是不能滚动的...尝试添加 IsManipulationEnabled 方法 可以看到有输出但是就是不能滚动...在我博客 WPF 拖动滚动 告诉大家通过 PanningMode 的方法可以让滚动滚动 只要在初始的过程设置了 PanningMode 因为在代码里面通过 InvalidateProperty 重新设置

79310

OEA 中 WPF 树型表格虚拟化设计方案

我们得先看看如何在 WPF 中实现虚拟化。...WPF 虚拟化相关知识     我之前写过一篇文章《精通 WPF UI Virtualization》,里面引用了许多老外的文章,说明了要实现界面虚拟化需要做的几件事。...那么,在这样层次要求下,要如何实现只使用一个滚动条的虚拟化呢?还好,WPF 自带的 DataGrid 也带有行列虚拟化的功能,我们可以先看一下 DataGrid 是如何实现的。...图1 DataGrid 虚拟化可视树结构     结合上面这个图,再查阅 DataGrid 源码,可以看出:     * 整个 DataGrid 表格中只有一个 ScrollViewer,表格作为一个...目前暂时设定为,当列数超过 50 的时候,该表格会自动打开列虚拟化功能,提升渲染性能。

2.6K70

WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因

这样,按钮的可用性会自动根据 WalterlvCommand 当前 CanExecute 的状态来改变。...如何手动刷新命令 调用以下代码,即可让 WPF 中的命令刷新其可用性: 1 CommandManager.InvalidateRequerySuggested(); WPF 的命令在何时刷新?...CommandManager.InvalidateRequerySuggested(); } 然而,并不是只在这些时机进行刷新,还有其他的时机,比如这些: 在 Menu 菜单的子菜单项打开的时候(参见 MenuItem.OnIsSubmenuOpenChanged) 在长按滚动条中的按钮以连续滚动的过程中...Tracker.DecreaseRepeatButton) 在 DataGridCell 的只读属性改变的时候(参见 DataGridCell.OnNotifyIsReadOnlyChanged) 在 DataGrid...中的各种各样的操作中(参见 DataGrid) 在 JournalNavigationScope 向后导航的时候(参见 JournalNavigationScope.OnBackForwardStateChange

64030

dotnet 7 WPF 破坏性改动 按下 F3 让 DataGrid 自动排序

本文记录在 dotnet 7 下的 WPF 的一个破坏性改动。在 dotnet 7 下的 WPF 支持 DataGrid 在按下 F3 键的时候,自动按照当前所选列进行列自动排序。...: https://github.com/dotnet/wpf/pull/6873 行为上就是在 DataGrid 获取选中和键盘焦点时,按下 F3 键,将会根据当前选中的列作为排序依据,进行排序。.../Window> 尝试切换到 dotnet 7 框架,然后运行项目,接着随意选中一项,按下 F3 键,可以看到 DataGrid自动排序 尝试切换到 dotnet 6 框架,执行以上步骤,可以看到按下...F3 键,啥都没有发生 这就是 dotnet 7 在 WPF 引入的一个破坏性变更 如果不想要此功能,可以自己通过路由事件吃掉 F3 键,从而不让 DataGrid 排序 protected...更多请看 Wpf DataGrid in .NET7 takes away F3 and automatically sorts. - Breaking change. · Issue #7288 ·

72020
领券