2

我有一个 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>

只要用户直接单击复选框,一切都会正常工作。如果他们单击单元格中的任何其他位置,则单元格将被选中。但是在随后单击复选框时 - 复选框会更改状态,但该更改不会反映在绑定对象中。
如果用户单击任何其他单元格,然后返回单击复选框,它会再次起作用。
为什么选择单元格会禁用复选框的绑定????

我尝试了将水平/垂直对齐设置为拉伸的解决方案,但这并没有改变任何东西。

4

1 回答 1

3

好吧,答案是……

<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>

像这样将复选框包装在内容控件中会导致问题消失!

于 2010-11-03T20:36:08.847 回答