Странное поведение с CheckBox в DataGridTemplateColumn - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть SL4 DataGrid со столбцом, содержащим флажок:

   <data:DataGridTemplateColumn Header="Check" CanUserSort="False" >
      <data:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <CheckBox x:Name="CheckRead" Click="CheckRead_Click" IsChecked="{Binding Acknowledged, Mode=TwoWay}" />
        </DataTemplate>
      </data:DataGridTemplateColumn.CellTemplate>
    </data:DataGridTemplateColumn>

Все работает нормально, пока пользователь нажимает напрямую на флажок. Если они щелкают где-либо еще в ячейке, ячейка выбирается. Но при последующих нажатиях на флажок - флажок изменяет состояние, но это изменение не отражается в связанном объекте.
Если пользователь нажимает на любую другую ячейку и затем возвращается, чтобы установить флажок, он снова работает.
Почему выбор ячейки отключает привязку флажка ????

Я попробовал решение, предложенное для установки горизонтального / вертикального выравнивания на растяжение, но это ничего не меняет.

1 Ответ

3 голосов
/ 03 ноября 2010

Хорошо, ответ ...

<data:DataGridTemplateColumn Header="Check" CanUserSort="False" >
  <data:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Center">
        <CheckBox x:Name="CheckRead" Click="CheckRead_Click" IsChecked="{Binding Acknowledged, Mode=TwoWay}"  />
      </ContentControl>
    </DataTemplate>
  </data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>

Завершение флажка в Contentcontrol, как это приводит к исчезновению проблемы!

...