DataGridCheckboxColumn двусторонняя привязка
Я использую DataGrid из инструментария WPF в .NET 3.5.
У меня есть столбец 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
В DataGrid
привязки не будут зафиксированы до тех пор, пока вы не закончите редактирование строки/ячейки. Если вы нажмете клавишу ввода, привязка вернется к исходному коду.
Использование такого шаблона переопределяет это поведение, но я бы не рекомендовал этого. Также не требуется установка TwoWay
.
Ответ 2
У меня с вами такая же проблема, вот мое решение
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding BoolProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Ответ 3
Моим решением было установить UpdateSourceTrigger в PropertyChanged.
<DataGridCheckBoxColumn Header="Bool property" Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}"></DataGridCheckBoxColumn>
Ответ 4
Моим решением было добавить ElementStyle со Style TargetType = "CheckBox":
<DataGridCheckBoxColumn Binding="{Binding BoolProperty, UpdateSourceTrigger=PropertyChanged}">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox"/>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>