问题描述:
在DataMemberBinding中直接绑定数据,必须回车才会触发属性变动
原理
当用数据填充RadGridView 时,可以使用两种逻辑类型的列 :绑定和未绑定。
- GridViewDataColumn,绑定列,表示来自RadGridView 的ItemsSource的数据,类型为GridViewDataColumn,设置了DataMemberBinding属性,支持排序、过滤、分组、聚合。RadGridview控件会自动未单元格的视图和编辑模式生成控件。例:对于字符串类型,查看模式默认控件TextBlock,编辑模式默认控件为TextBox
- CellTemplate, 未绑定列,用于显示自定义内容,通过GridViewColumn.CellTemplate实现,可与GridViewDataColumn同时设置
- CellEditTemplate : 获取或设置处于编辑模式的单元格的数据模板。
问题推断
现象:使用GridViewDataColumn时,列的 DataMemberBinding的UpdateSourceTrigger属性被忽略
原因:使用RadGridView 时,控件为了提高性能,避免每次击键都会发生验证和提交操作,会自动将"Binding.UpdateSourceTrigger"属性更改为"Explicit",按Enter键或者再次点击GridView控件才提交数据。
解决方案:
可以通过使用列的CellEditTemplate属性并设置应用于编辑模式下的元素的绑定的UpdateSourceTrigger(例如 GridViewDataColumn 的编辑元素是一个 TextBox)来克服这个问题。
<telerik:GridViewDataColumn DataMemberBinding="{Binding Name}">
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
触发过程