Подтвердить что ты не робот

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?

4b9b3361

Ответ 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>