3 votes

Comment redimensionner la largeur d'une colonne GridView après son initialisation ?

Problème mis à jour :

Dans WPF, j'utilise un GridView (à l'intérieur d'un ListView ) pour afficher une liste de Textbox-Slider paires. Chacune de ces paires est disposée dans exactement une cellule de la colonne unique (en utilisant un élément DockPanel pour chaque paire).

Le curseur a une largeur minimale afin qu'il ne s'effondre pas, ce qui n'est pas le cas de la zone de texte, qui est redimensionnée dynamiquement lors de la réception des données.

Le problème est que lorsque la largeur de la zone de texte augmente, la largeur de la colonne n'est pas modifiée de manière équivalente. Le curseur de la ligne correspondante est donc visuellement coupé sur le côté droit. En conséquence, le bouton du curseur disparaît dans le vide lorsqu'il est déplacé vers l'extrémité droite.

La question est donc la suivante : comment puis-je forcer la largeur des colonnes de la grille à se redimensionner dynamiquement si le contenu dépasse l'espace disponible (qui a été défini lors de l'initialisation) ?

Percentage sliders with disappearing knobs

Ignorez simplement l'étiquette entre la zone de texte et le curseur (sans elle, le comportement ne change pas).

2voto

Mihai Points 158

Une façon de le faire est de prendre l'événement de l'étiquette et de l'envoyer à la grille (sizeChanged) et ensuite de redimensionner la grille proportionnellement à la taille de l'étiquette...

1voto

Frank59 Points 1237
Size containerSize=new Size(100, 100);
public Size CalculateSize(FrameworkElement visualBlock, Size containerSize)
{
    visualBlock.Measure(containerSize);
    return visualBlock.DesiredSize;
}

Ce code obtient la taille de l'élément du cadre pour le rendre à l'intérieur du conteneur. Après cela, vous pouvez définir la taille par programme. Il est nécessaire de connaître la taille du parent pour un travail correct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X