2010-11-03 118 views
2

複選框奇怪的行爲,我有一個SL4 DataGrid中含有一個複選框列:只要用戶點擊直接上的複選框在DataGridTemplateColumn

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

,一切工作正常。如果他們點擊單元格中的其他任何位置,單元格將被選中。但是隨後點擊複選框 - 複選框將更改狀態,但該更改不會反映在綁定對象中。
如果用戶點擊任何其他單元格,然後返回點擊複選框,它會再次運行。
爲什麼選中單元格會禁用複選框的綁定?

我試過解決方案建議設置水平/垂直對齊拉伸,但不會改變任何東西。

回答

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> 

結束語在這樣的ContentControl中的複選框會導致問題走開!