wpf中更新数据源的时机

近来在做一个数据库表结构导出C#实体类的工具。
搞工具使用SqlSugar来连接数据库,然后将数据库中的表信息,呈现在界面上。然后勾选对应的数据库表。然后导出。
导出界面如下。

期望的效果

途中每一行代表数据库中的一个表,表明列就是数据库中的表明。描述列是数据库中表的对应描述
在勾选了左侧的单选按钮后,可能点击导出对应的表成为一个C#实体类文件。

出现的问题

在点击勾选每行的checkbox控件后,控件在视觉上确实被选中了。但是DataGrid表对应的绑定数据中。该表的选择状态并没有发生变化。仍然为未被选中状态。 只有选择后,让该行的checkbox失去焦点才能够更新数据。

百思不得其解。

这样也能够完成工具的基础功能。但是这毕竟操作起来不方便。

解决办法

  1. <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#