最近,开始学习WPF,其UI设计完全颠覆了传统的设计理念,为程序员提供了极大的自由发挥空间,让我为之惊叹,且为之着迷。然而,WPF在国内的热度却并不高,大部分贴子都是2012年以前的,出版的图书也很少,参考的资料不多。为了避免在以后的编程中少走弯路,也防止自己遗忘,在此记录学习过程遇到的一些问题和感悟。

问题:在一个表格中录入数据,当在某列单元格中录入时,弹出一个提示框,并根据录入字符进行逐键过滤。效果如下图:

首先想到是用TextChanged事件进行处理,但是发现DataGrid只有CellEditEnding事件,没有TextChanged事件,这样,则只能在整个单元格录入完毕后才能触发事件,不能做到根据录入字符逐键触发。

后来,采用自定义列,加入TextBox,利用TextBox的TextChanged事件顺利解决。

 <DataGrid Name="dgVoucher"
CanUserAddRows="False"
AutoGenerateColumns="False"
RowHeight="" BeginningEdit="">
<DataGrid.Columns>
<DataGridTextColumn Header="凭证号" Binding="{Binding Path=FVchNum}"/>
<DataGridTextColumn Header="月" Binding="{Binding Path=FPeriod}"/>
<DataGridTextColumn Header="日" Binding="{Binding Path=FDay}"/>
<DataGridTextColumn Header="摘要" Binding="{Binding Path=FExp}"/>
<DataGridTemplateColumn Header="会计科目">
<DataGridTemplateColumn.CellTemplate>
12 <DataTemplate>
13 <TextBox Name="txtAcctName" Text="{Binding FFullName}" TextChanged="txtAcctName_TextChanged" BorderThickness="0"/>
14 </DataTemplate>
15 </DataGridTemplateColumn.CellTemplate>

</DataGridTemplateColumn>
<DataGridTextColumn Header="借方金额" Binding="{Binding Path=FDebit}"/>
<DataGridTextColumn Header="贷方金额" Binding="{Binding Path=FCredit}"/>
</DataGrid.Columns>
</DataGrid>

WPF学习笔记(1):DataGrid单元格实现逐键过滤功能的更多相关文章

  1. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决

    原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...

  2. 基于1.3.3版本tooltip的datagrid单元格tip实现

    基于1.3.3版本tooltip的datagrid单元格tip实现 2013年05月25日 ⁄ datagrid ⁄ 共 6122字 ⁄ 评论数 26 ⁄ 被围观 7,033 views+ 文章目录 ...

  3. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  4. WPF学习笔记-用Expression Design制作矢量图然后导出为XAML

    WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...

  5. WPF 学习笔记-在WPF下创建托盘图标

    原文:WPF 学习笔记-在WPF下创建托盘图标 首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Co ...

  6. WPF 学习笔记-设置属性使窗口不可改变大小

    原文:WPF 学习笔记-设置属性使窗口不可改变大小 调整Windows下的ResizeMode属性: ResizeMode = NoResize Resize属性是控制Windows是否可以改变大小, ...

  7. datagrid单元格格式化样式化

    本文体验datagrid单元格的格式化和样式化.   datagrid显示的DOM结构 <td field="code"> <div style="te ...

  8. WPF 导出Excel(合并单元格)

    WPF 导出Excel(合并单元格) DataTable 导出Excel(导出想要的列,不想要的去掉) ,B1,B2,B3,B4,B5} MisroSoft.Office.Interop.Excel. ...

  9. 关于C# wpf DataGrid单元格双击设置单元格内容

    1.我是使用了 visual stadio 2015, 用的C# WPF写个工具,但是发现wpf原生没有涉及表格的东西(类似 winform·的DataGridView),所以使用的是toolkit工 ...

随机推荐

  1. swift MD5 加密方法

    引入OC类库 md5.h: #import <UIKit/UIKit.h> @interface Md5Controller : UIViewController @end md5.m: ...

  2. java 泛型: 通配符? 和 指定类型 T

    1. T通常用于类后面和 方法修饰符(返回值前面)后面 ,所以在使用之前必须确定类型,即新建实例时要制定具体类型, 而?通配符通常用于变量 ,在使用时给定即可 ? extends A  :  通配符上 ...

  3. Firebug & Chrome Console 控制台使用指南

    转自:http://visionsky.blog.51cto.com/733317/543789 Console API 当打开 firebug (也包括 Chrome 等浏览器的自带调试工具),wi ...

  4. SWE_Browser编译

    QRD从android4.4开始使用SWE_Browser,android原始代码中不再提供Browser.最近在做一个QRD8916_113517 CMCC入库版本,需要使用SWE_Browser. ...

  5. 设置默认Browser

    电信A库要求android系统中有多个Browser时,开机自动设置一个默认浏览器,而不用弹出选择框让用户手动选择. 监听开机广播Intent.ACTION_BOOT_COMPLETED, 用Pack ...

  6. 关于ueditor 在struts2 中 上传图片 ,未找到上传文件 问题的解决方法

    问题原因: ueditor 上传图片需请求imageUp.jsp文件,struts2 自带的拦截器(/*)把所有请求的文件都做了处理,所以导致无法上传图片. 解决方法: 方法一:自定义拦截器,让它在请 ...

  7. [转]MySQL索引原理及慢查询优化

    MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...

  8. 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)

    传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...

  9. SPRING 集成 KAFKA 发送消息

    准备工作 1.安装kafka+zookeeper环境 2.利用命令创建好topic,创建一个topic my-topic 集成步骤 1.配置生产者 <?xml version="1.0 ...

  10. python知识积累

    1. 安装requirements.txt依赖: pip install -r requirements.txt 生成requirements.txt文件: pip freeze > requi ...