首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简单实现DataGrid使用CheckBox选择

以前写过几个方法实现这个功能,但最终还是选择了不继承DataGrid,所以再重新发布出来。 先显示最终结果,其中左边是错误的例子,右边才是正确的 ?...在DataGrid中使用CheckBox选择行时典型的错误就是CheckBox没有Binding到任何属性上,这样的话当拖动滚动条时CheckBox.IsChecked就会乱掉,如Demo中左边那个DataGrid...其实只要在DataGrid.LoadingRow事件中将CheckBox的DataContext设定为另外一个Object,就不需要牺牲DataGrid的高效能,也不需要改变原有数据的结构。...最终的实现方法是自定义一个包含DataGrid的DataGridTemplateColumn,而不需要重写DataGrid,这样的坏处就是每次调用需要多写一局代码,如果不想这样就继承DataGrid然后把这句代码写进去...在DataGrid.Columns中加入自定义的Column,然后在代码中关联DataGrid和这个Colum,就完成了: <sdk:DataGrid ItemsSource="{Binding}"

84830

WPF DataGrid 通过自定义表头模拟首固定

WPF DataGrid 通过自定义表头模拟首固定 独立观察员 2021 年 9 月 25 日 最近工作中要在 WPF 中做个表格,自然首选就是 DataGrid 控件了。...一开始,参照了其它界面,这一还是通过数据来做,只不过绑定的数据项中有一个特殊的属性来表明这是个特殊,界面上通过数据模板选择器来自动展现出特别的内容(新增按钮及相关文字,并把其它字段内容隐藏)。...最后就是表格控件 DataGrid 了,使用了上面这些资源,默认使用的是普通表头样式,所以普通列就不用特地指定样式了。...最后来看 DataGrid 表格的列集合,每列都是 DataGridTemplateColumn 类型。...前面也说过 DataGrid 指定了普通表头样式作为默认的表头样式,所以普通列就不用额外设置了,而且由于内容简单,所以直接使用 Header 属性设置表头内容(列标题)。

2.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解

一、DataGrid控件详解WPF中的DataGrid是一个非常强大和灵活的控件,它可用于展示和编辑数据。...SelectionMode:指定选择模式。方法:BeginEdit():开始编辑当前单元格。CancelEdit():取消当前单元格的编辑状态。CommitEdit():提交当前单元格的编辑状态。...1.属性介绍WPFDataGrid控件的常见属性如下:AutoGenerateColumns:是否自动生成列,默认为true。CanUserAddRows:是否允许用户新增,默认为true。...SelectionMode:选择模式,有Single和Extended两种模式可选,默认为Extended。RowHeaderWidth:行头宽度。RowHeight:高。...数据编辑:DataGrid控件可以支持数据的编辑,包括单元格编辑、编辑和列编辑等方式,方便用户对数据进行修改和更新。

74100

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

本文记录在 dotnet 7 下的 WPF 的一个破坏性改动。在 dotnet 7 下的 WPF 支持 DataGrid 在按下 F3 键的时候,自动按照当前所选列进行列自动排序。...: https://github.com/dotnet/wpf/pull/6873 行为上就是在 DataGrid 获取选中和键盘焦点时,按下 F3 键,将会根据当前选中的列作为排序依据,进行排序。...F3 键,啥都没有发生 这就是 dotnet 7 在 WPF 引入的一个破坏性变更 如果不想要此功能,可以自己通过路由事件吃掉 F3 键,从而不让 DataGrid 排序 protected...更多请看 Wpf DataGrid in .NET7 takes away F3 and automatically sorts. - Breaking change. · Issue #7288 ·...因为很难有一些功能让大家都喜欢,特别是一些有选择性的变更,选了 A 一定就会让期望 B 的开发者伤心 现在的 WPF 开发团队还是很能听进话的,在经过了一场激烈的战斗之后,大家都同意这个功能在下个更改版本里面

72020

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题 目录 一、触屏事件连带触发鼠标事件的问题 二、DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一、...触屏事件连带触发鼠标事件的问题 这个是 WPF 已知的问题,网络上也有一些讨论,但是没有一个完美的方法来解决。...这个方法能满足部分场景,比如之前有这样一个问题,在 DataGrid 表格上方有一个 DatePicker 日期选择控件,日期展开后,下拉的悬浮框会遮在表格上,当在下拉的悬浮框中选择日期后下拉框收起,这时却在表格上产生了某个条目的选中效果...注意,本文将在上篇文章《WPF DataGrid 通过自定义表头模拟首固定》的示例程序基础上进行演示,建议先看看那篇文章。下面开始改造。...原因是,改变事件 SelectionChanged 是在 PreviewMouseDown 事件之后触发的,如果在 PreviewMouseDown 中将事件标记为已处理,那么改变事件也就不会触发了

2.5K10

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

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

2.8K30

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

WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGrid...而还有一种情况,我们可能在业务逻辑中,由程序自己选中了某一,如果这一当前不在用户界面的可视区(换句话说也就是滚动条没有滚到那个位置),那么我们如何将其带到用户的视野中呢?...使用的还是之前用过的 DataGrid 的 Demo 程序(在《WPF DataGrid 通过自定义表头模拟首固定》和《WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题》中用过),加了一个可以填写要选中的行号的文本框...类似于这个帖子的情况《WPF 开启行虚拟化的时候,选择功能不正常,求解决方案》(https://bbs.csdn.net/topics/392666509): 所以如果因为数据量比较大必须开启行虚拟化时...方法二则是需要在 ViewModel 和页面后台编写代码,通过事件来触发相关操作,不过可以支持虚拟化。大家可以依据实际情况选择使用,如果有更好的方法,欢迎交流。

1.8K10

XAML常用控件2

wpf和WinForm中XY轴的定义是一样的,都是从程序的左上角作为原点,原点到右上角这一条线是X轴,原点到左下角这一条线是Y轴。...WarpPanel:这个布局跟StackPanel很相像,它是流式布局,同样是使用Orientation属性来控制子控件的排列,但是比StackPanel更强大的功能是当控件不能在一或者一列排开时,它会自另起一或一列..."); } 程序运行时,当我点击菜单项1时会弹出MessageBox框提示“菜单1被选中了”,取消选中时会提示“菜单1取消选中”,效果如下: ListBox:这个控件是个使用频率很高的控件...> ...,选择框,下拉框,超链接四个常用列类型,根据业务需求,我们也可以通过DataGridTemplateColumn来自定义列模板。

2.3K30

C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

message) { System.Windows.MessageBox.Show(message.ToString()); } 04 发布事件 可以选择同步发布或者异步发布...Task.Run(action); }); } 这样,一个发布/订阅的事件就完成了,也可以在任何时候取消事件注册...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

1.8K10

WPF 属性变动后的业务处理及恢复原始值的方法

阅读本文需要有一定的 WPF 基础(WPF 绑定基类),如果是刚入门的朋友,可以先看看我以前写的文章《WPF 原生绑定和命令功能使用指南》。...这种方式更加灵活,因为可以根据情况来随时附加和取消处理方法。...比如,只在编辑状态时附加事件处理方法,在转为浏览状态时,取消该处理方法:[图 3-2-1 按情况附加和取消方法(来自:DLGCY_WPFPractice)]3.3、说明其实这种属性变动后的业务处理的写法...WPF 元素导出为图片的方法让 WPF 的 RadioButton 支持再次点击取消选中的功能WPF DataGrid 如何将被选中行带到视野中WPF 触屏事件后触发鼠标事件的问题及 DataGrid...误触问题WPF DataGrid 通过自定义表头模拟首固定WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换【翻译】WPF 中附加行为的介绍 Introduction

3.3K50

C# WPF MVVM模式Prism框架下事件发布与订阅

.Publish(new PersonInfo() {Name ="zyr",Age = 18,Sex = "nan" }); } 这样,一个发布/订阅的事件就完成了,也可以在任何时候取消事件注册...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...(list、Dictionary) C# WPF MVVM模式下在主窗体显示子窗体并获取结果 C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号的使用...C# 无意间写了一段线程死锁的代码 C# 看懂这100+代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

2.8K20

【我们一起写框架】MVVM的WPF框架(五)—完结篇

前言 这篇文章是WPF框架系列的最后一篇,在这里我想阐述一下我对框架设计的理解。...DataGrid高级应用 在高级应用中,我们对表格增加了过滤功能。界面效果如下: ?...在代码中可以看到,我们为Filter赋值了一个匿名委托;这个委托有一个入参和一个返回值;其中,入参是我们表格中的的DataContext,返回值是Bool类型,表示这行在表格中是否显示。...接下来,我们在委托中对的DataContext数据进行了比较处理,根据比较结果来确定,该行是否显示。...相关文章: 【我们一起写框架】MVVM的WPF框架(一)—序篇 【我们一起写框架】MVVM的WPF框架(二)—绑定 【我们一起写框架】MVVM的WPF框架(三)—数据控件 【我们一起写框架】MVVM的WPF

2.1K40

深入解析 DataGrid 过滤功能

本文要解析的不是标准DataGrid,而是Silverlight和WPF平台下的C1DataGrid的过滤功能。...根据不同列的数据类型,C1DataGrid还提供了特殊的过滤器。比如日期类型或者布尔类型的列中,可以选择适合的条件过滤器,如下图所示: ?...过滤 另外一种基本的过滤功能可通过典型的过滤来实现。过滤是由一些文本框组成的固定,用户可以在改行的文本框中输入过滤条件。...可作为过滤条件的值以选择列表的形式显示,用户可以选择那些值显示,那些不显示,这为拥有唯一或者重复值的列提供了非常有效的过滤方式(例如:类别或类型列)。你可以通过两种方法实现多值过滤功能。...关于更多的功能可以下载C1DataGrid产品,Studio for Silverlight或Studio for WPF

2.8K70

OEA 中 WPF 树型表格整体重构

随着对 WPF 技术了解得更深入,希望做一个完全独立的 WPF 控件。(用了那么久 WPF,想留下点东西。:)) TreeGrid 重构设计     先看下历史代码结构: ?...而我们的表格 API,也应该象 WPF 原生的 System.Windows.Controls.DataGrid 控件接口类似。...例如:表格由组成、由格子组成、可以通过数据找到对应的、再通过找到对应的格子等。这里,我分析了一下 DataGrid 中,认为一些比较重要的 API: ?...图 DataGrid 重点API     九、十月私下的时间,都在思考、设计、编码这玩意儿。经过N多天的努力……目前已经把所有代码完成。...元素的逻辑行为与渲染是分离的:     在元素发生诸如点击、拖动、选择等逻辑行为时,其实只变更了它内部的状态数据。

1.8K60

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

引言 上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生的 DataGrid 的样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。...重写过程中,遇到了两个问题: 如何获取 「WPF」 原生的 DataGrid 的样式? 滚动条样式中,如何固定滚动条长度? 本篇文章分享一下这两个问题的解决办法。...问题1 第一个,如何获取 「WPF」 原生的 DataGrid 的样式?...这时会弹出创建资源的窗体,可以选择你创建样式的形式是什么。 关键字选项:可以选择你创建的样式是否带 Key,若不带 Key 则默认应用在所有该类型控件上。...「第三步:」 我这里选择,生成到当前文件 Window.Resources 中且带 Key 的样式,然后他就会生成原生的样式代码。如下所示,这里代码太多,折叠展示。

28420
领券