wpf中更新数据源的时机
近来在做一个数据库表结构导出C#实体类的工具。
搞工具使用SqlSugar来连接数据库,然后将数据库中的表信息,呈现在界面上。然后勾选对应的数据库表。然后导出。
导出界面如下。
期望的效果
途中每一行代表数据库中的一个表,表明列就是数据库中的表明。描述列是数据库中表的对应描述
在勾选了左侧的单选按钮后,可能点击导出对应的表成为一个C#实体类文件。
出现的问题
在点击勾选每行的checkbox控件后,控件在视觉上确实被选中了。但是DataGrid表对应的绑定数据中。该表的选择状态并没有发生变化。仍然为未被选中状态。 只有选择后,让该行的checkbox失去焦点才能够更新数据。
百思不得其解。
这样也能够完成工具的基础功能。但是这毕竟操作起来不方便。
解决办法
<DataGridCheckBoxColumn Binding="{Binding IsChecked,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="80" Header="" EditingElementStyle="{StaticResource FunnyDataGridCheckBoxColumnEditting}" ElementStyle="{StaticResource FunnyDataGridCheckBoxColumnEditting}" />
其中关键的地方就是将UpdateSourTrigger设置为PropertyChanged就可以了。
经查看UpdateSourceTrigger的作用如下:当做何种改变的时候通知数据源我们做了改变。该属性有如下表格的四种值,详细见下面表格的描述。
枚举类型 | 效果 |
---|---|
Default | 默认值(默认为LostFocuse) |
Explicit | 当应用程序调用 UpdateSource 方法时生效 |
LostFocus | 失去焦点的时候触发 |
PropertyChanged | 数据属性改变的时候触发 |
从上面可以看出来:之所以出现上面的问题,就是Data和View 更新的机制没有明确指定,使用了Default(默认值LostFocuse)导致的。因此出现将UpdateSourTrigger设置为PropertyChanged就能够解决问题。
2024-02-24 10:42:22
user 阅读(100) 评论(0)
标签:C#,wpf,UpdateSourceTrigger,datagrid,DataGridCheckBoxColumn
分类:C#
很赞哦! (0)