2010-11-03 5 views
2

J'ai un DataGrid SL4 avec une colonne contenant une case à cocher:Comportement étrange avec CheckBox dans 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> 

Tout fonctionne très bien tant que l'utilisateur clique sur directement sur la case à cocher. Si elles cliquent n'importe où ailleurs dans la cellule, la cellule est sélectionnée. Mais lors de clics ultérieurs sur la case à cocher - la case à cocher change d'état mais cette modification n'est pas reflétée dans l'objet lié.
Si l'utilisateur clique sur une autre cellule, puis revient à cliquer sur la case à cocher, il fonctionne à nouveau.
Pourquoi la sélection de la cellule désactive-t-elle la liaison de la case?

J'ai essayé la solution proposée de réglage d'alignement horizontal/vertical pour étirer mais cela ne change rien.

Répondre

3

D'accord, la réponse est ...

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

la case d'emballage dans un ContentControl comme cela provoque le problème à aller!