J'ai un DataGrid avec la première colonne comme colonne de texte et la deuxième colonne comme colonne CheckBox. Ce que je veux, c'est, si je clique sur la case à cocher. Il devrait être vérifié.
Mais, il faut deux clics pour être sélectionné, pour le premier clic, la cellule est sélectionnée, pour le second clic, la case à cocher est cochée. Comment faire la case à cocher pour être cochée / décochée en un seul clic.
J'utilise WPF 4.0. Les colonnes du DataGrid sont générées automatiquement.
wpf
datagrid
wpfdatagrid
Prince Ashitaka
la source
la source
Réponses:
Pour la case à cocher DataGrid en un seul clic, vous pouvez simplement mettre un contrôle de case à cocher régulier à l'intérieur
DataGridTemplateColumn
et définirUpdateSourceTrigger=PropertyChanged
.la source
DataGridTemplateColumn.CellTemplate
avec votre propre reliure et cela fonctionnera !! La réponse de @ weidian-huang m'a aidé à comprendre cela, merci!J'ai résolu cela avec le style suivant:
Il est bien sûr possible de l'adapter davantage pour des colonnes spécifiques ...
la source
Tout d'abord, je sais que c'est une question assez ancienne, mais je pensais toujours que j'essaierais d'y répondre.
J'ai eu le même problème il y a quelques jours et je suis tombé sur une solution étonnamment courte (voir ce blog ). En gros, tout ce que vous avez à faire est de remplacer la
DataGridCheckBoxColumn
définition dans votre XAML par ce qui suit:L'avantage de cette solution est évident: elle est uniquement XAML; ainsi, il vous empêche de surcharger votre code-back avec une logique d'interface utilisateur supplémentaire et vous aide à maintenir votre statut aux yeux des fanatiques de MVVM;).
la source
Pour que la réponse de Konstantin Salavatov fonctionne avec
AutoGenerateColumns
, ajoutez un gestionnaire d'événements auxDataGrid
'sAutoGeneratingColumn
avec le code suivant:Cela rendra toutes les
DataGrid
colonnes de cases à cocher générées automatiquement par "un simple clic" modifiables.la source
Basé sur le blog référencé dans la réponse de Goblin, mais modifié pour fonctionner dans .NET 4.0 et avec le mode de sélection de ligne.
Notez qu'il accélère également l'édition de DataGridComboBoxColumn - en entrant en mode d'édition et en affichant la liste déroulante en un seul clic ou en saisie de texte.
XAML:
Code derrière:
la source
J'ai essayé ces suggestions et beaucoup d'autres que j'ai trouvées sur d'autres sites, mais aucune d'elles n'a vraiment fonctionné pour moi. En fin de compte, j'ai créé la solution suivante.
J'ai créé mon propre contrôle hérité de DataGrid et j'ai simplement ajouté ce code:
Que fait tout cela?
Eh bien, chaque fois que nous cliquons sur une cellule de notre DataGrid, nous voyons si la cellule contient un contrôle CheckBox. Si c'est le cas , nous définirons le focus sur cette CheckBox et changerons sa valeur .
Cela semble fonctionner pour moi et c'est une solution agréable et facilement réutilisable.
Il est décevant que nous ayons besoin d'écrire du code pour ce faire. L'explication selon laquelle le premier clic de souris (sur CheckBox d'un DataGrid) est "ignoré" car WPF l'utilise pour mettre la ligne en mode Edition peut sembler logique, mais dans le monde réel, cela va à l'encontre du fonctionnement de chaque application réelle.
Si un utilisateur voit une case à cocher sur son écran, il devrait pouvoir cliquer une fois dessus pour la cocher / décocher. Fin de l'histoire.
la source
Il existe ici une solution beaucoup plus simple.
Si vous utilisez
DataGridCheckBoxColumn
pour mettre en œuvre, le premier clic est de se concentrer, le deuxième clic est de vérifier.Mais utiliser
DataGridTemplateColumn
pour mettre en œuvre ne nécessite qu'un seul clic.La différence d'utilisation
DataGridComboboxBoxColumn
et de mise en œuvre parDataGridTemplateColumn
est également similaire.la source
J'ai résolu avec ceci:
La case à cocher active en un seul clic!
la source
Basé sur la réponse de Jim Adorno et les commentaires sur son message, voici une solution avec
MultiTrigger
:la source
Une autre solution simple consiste à ajouter ce style à votre DataGridColumn. Le corps de votre style peut être vide.
la source
la source