我正在使用.NET 3.5中的WPF工具包中的DataGrid。
我有一个datagrid列绑定到源对象的布尔属性。
复选框正确调用boolean的属性get accessor。
但是,当选中或取消选中该框时,将调用get而不是set。
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Object, Source={StaticResource model}, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding BoolProperty, mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
当我使用带有Checkbox的DataGridTemplateColumn时,属性设置正确,但是创建一个漂亮的布局会更复杂。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolProperty, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
使用DataGridCheckBoxColumn我做错了什么?
答案 0 :(得分:42)
我遇到了同样的问题,这是我的解决方案
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding BoolProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
答案 1 :(得分:34)
我的解决方案是将UpdateSourceTrigger设置为PropertyChanged。
<DataGridCheckBoxColumn Header="Bool property" Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}"></DataGridCheckBoxColumn>
答案 2 :(得分:8)
在DataGrid
中,在您结束对行/单元格的编辑之前,绑定不会被提交。如果按Enter键,绑定将应用于源。
使用这样的模板会覆盖这种行为,但我不建议这样做。此外,不必明确设置TwoWay
。
答案 3 :(得分:3)
我的解决方案是使用Style TargetType =“CheckBox”添加ElementStyle:
<DataGridCheckBoxColumn Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox"/>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>