Datagrid, Fusionner/Fusionner des lignes, des cellules et des colonnes
Je suis en train de réaliser exactement ce que cette question est de demander, mais, malheureusement, les exemples de code fournis dans la réponse est parti, et je ne suis pas non plus l'utilisation de WPF Toolkit, voici la question qu'il a fait:
Je suis en train de Fusionner des cellules dans WPF toolkit datagrid .Je suis en train de faire quelque chose comme indiqué dans l'image ci-dessous.Nous pouvons le faire en Winforms datagrid.Mais comment faire en utilisant WPF toolkit datagrid ?.Ou est-il une alternative contrôles..?
Pouvons-nous faire cela à l'aide de listview listbox ou..? Ou est-il tout gratuit
les commandes disponibles qui ont cette fonctionnalité ?
J'ai trouvé plusieurs réponses qui parviennent à le faire avec le contrôle DataGridView, mais je ne veux pas utiliser les objets de Formulaire dans un projet WPF, il est un moyen pour accomplir cette?
- prntscr.com/3xzotz j'ai implémenté à l'aide de cette liste.je vais ajouter du code si vous avez besoin de cette
- Serait heureux si vous pouviez le partager, peut-être en mesure d'obtenir ma tête autour de lui.
Vous devez vous connecter pour publier un commentaire.
Recource
xaml
c#
D'une cellule fusionnée, de lier son
Margin
et de la régler à une valeur négative égale à la somme de la largeur/hauteur de l'associé cellules fusionnées - ensuite, la cellule va déborder de partout et sur les cellules voisines.Les liaisons sont indexés en raison
CellMargins
est unObservableCollection
deThickness
. Le viewmodel est au niveau de la ligne, de sorte que chaque colonne se lie à un autre indice.Avant cela devient downvoted, permettez-moi de dire cela peut conduire à des indésirables visual bizarreries. Obtenir que cela fonctionne parfaitement nécessite un peu de code-behind, tels que:
Des marges de la cellule' les valeurs négatives doivent être mis à jour chaque fois que la largeur d'une colonne changements, de sorte que j'ai manipulé la grille de données de
LayoutUpdated
événement, où j'ai réitéré à travers les colonnes, mesuré leurActualWidths
et mis à jour les marges en conséquence. Je l'ai même mise à jour leBorderThickness
pour afficher/masquer les bordures de cellules que nécessaire. Désactiver la surbrillance de sélection pour les cellules qui sont "cachés" est un autre truc.Noter que ce moyen de garder une trace de ce que les cellules (c'est à dire, la ligne qui viewmodel et de la colonne indices) vous souhaitez fusionné séparément dans le code-behind.
Cette méthode est complexe et n'est probablement pas la méthode la plus simple pour chaque situation, mais j'ai trouvé utile pour mes fins. J'avais besoin d'un
Datagrid
où l'utilisateur pourrait fusionner/dissocier les cellules et créer/supprimer des colonnes, similaire à Excel. En outre, je voulais rester avecDataGridTextColumns
(au lieu de la coutumeTemplateColums
) en raison de leur fonctionnalité intégrée (reconnu clavier des commandes d'édition, copier/coller, etc.)