DataGridCheckboxColumn 双向绑定

Posted

技术标签:

【中文标题】DataGridCheckboxColumn 双向绑定【英文标题】:DataGridCheckboxColumn two way binding 【发布时间】:2012-05-25 22:39:18 【问题描述】:

我在 .NET 3.5 中使用 WPF 工具包中的 DataGrid。

我有一个数据网格列绑定到源对象的布尔属性。

复选框正在正确调用布尔属性获取访问器。

但是,当检查或取消选中框时,正在调用GET而不是集合。
<DataGrid AutoGenerateColumns="False" ItemsSource="Binding Object,  Source=StaticResource model, Mode=TwoWay">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Binding="Binding BoolProperty, mode=TwoWay"/>                
        </DataGrid.Columns>
</DataGrid>

当我改为使用带有复选框的 DataGridTemplateColumn 时,属性设置正确,但是创建漂亮的布局会更加复杂。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="Binding BoolProperty, Mode=TwoWay"/>                            
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我在使用 DataGridCheckBoxColumn 时做错了什么?

【问题讨论】:

【参考方案1】:

我和你有同样的问题,这是我的解决方案

<CheckBox HorizontalAlignment="Center" IsChecked="Binding BoolProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged"/>

【讨论】:

谢谢先生,我在网上搜索了一段时间才找到这个解决方案。效果很好。 TwoWay 不是必需的,因为它是默认设置。【参考方案2】:

我的解决方案是将 UpdateSourceTrigger 设置为 PropertyChanged。

<DataGridCheckBoxColumn Header="Bool property" Binding="Binding BoolProperty, UpdateSourceTrigger=PropertyChanged"></DataGridCheckBoxColumn>

【讨论】:

这是最好的答案。 这应该是答案【参考方案3】:

DataGrid 中,直到您结束对行/单元格的编辑,绑定才会提交。如果您按下回车,绑定将应用回源。

使用这样的模板会覆盖该行为,但我不建议这样做。也不需要显式设置TwoWay

【讨论】:

好的,谢谢,在这种情况下,行为是必要的,因为当用户选中我想在屏幕上直观地更新某些内容的框时。有没有办法使用 DatGridCheckBoxColumn 做到这一点?还有什么是最好的方法,这样在初始点击时用户不必点击两次来选择行然后复选框,你能用鼠标悬停事件选择行吗? @DanBrum:我不知道您是否可以使用该列规避此问题,如果您找不到方法,您可以定义自己的 DataGridCheckBoxColumn。应该可以在 MouseOver 上进行选择。【参考方案4】:

我的解决方案是使用 Style TargetType="CheckBox" 添加 ElementStyle:

<DataGridCheckBoxColumn Binding="Binding BoolProperty, UpdateSourceTrigger=PropertyChanged">
          <DataGridCheckBoxColumn.ElementStyle>
                 <Style TargetType="CheckBox"/>
          </DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>

【讨论】:

这是最好的答案。谢谢兄弟

以上是关于DataGridCheckboxColumn 双向绑定的主要内容,如果未能解决你的问题,请参考以下文章

DataGridCheckBoxColumn 立即绑定

Wpf DataGridCheckBoxColumn 问题

wpf datagridcheckboxcolumn:如何启用/禁用复选框

WPF DataGridCheckBoxColumn 绑定值后不能选中以及 能选中后,不能进行属性通知

如何在不需要额外点击的情况下使 DataGridCheckBoxColumn 可编辑?

WPF DataGridCheckBoxColumn检查/取消选中有时不起作用