28

我在 .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 我做错了什么?

4

4 回答 4

54

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

<CheckBox HorizontalAlignment="Center" IsChecked="{Binding BoolProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
于 2013-03-21T14:24:40.323 回答
46

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

<DataGridCheckBoxColumn Header="Bool property" Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}"></DataGridCheckBoxColumn>
于 2014-10-17T07:00:27.840 回答
11

DataGrid您结束行/单元格的编辑之前,绑定不会被提交。如果您按下回车键,绑定将应用回源。

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

于 2012-05-18T10:50:30.427 回答
7

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

<DataGridCheckBoxColumn Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}">
          <DataGridCheckBoxColumn.ElementStyle>
                 <Style TargetType="CheckBox"/>
          </DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
于 2016-07-29T09:56:04.093 回答