J'ai essayé de trouver comment intégrer ce comportement personnalisé dans un tableau de données sans trop chercher de solutions en ligne.
Étant donné la grille de données suivante (certains xaml ont été supprimés pour des raisons de brièveté) :
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
J'ai la case à cocher liée avec succès à l'objet databound pour chaque ligne. (Remarque : j'utilise un objet DataGridTemplateColumn
plutôt que DataGridCheckBoxColumn
afin que vous n'ayez pas besoin de double-cliquer pour modifier la valeur).
Ce que je voudrais réaliser, c'est avoir la possibilité de cocher la case à cocher / mettre à jour la propriété Selected de l'objet databound lorsque l'utilisateur sélectionne une ligne. En fait, le clic sur toute la ligne active la propriété cochée de la case à cocher. Idéalement, j'aimerais faire cela sans fichier de code derrière si possible, car j'essaie de garder mon code derrière aussi propre que possible.
Une autre fonctionnalité que j'aimerais, si possible, serait que le fait de cliquer sur une ligne fasse basculer sa propriété sélectionnée de sorte que si vous cliquez sur une autre ligne, la précédente reste sélectionnée ainsi que la nouvelle.
Toute aide est la bienvenue.