Dynamiquement activer / désactiver la visibilité de WPF colonne de la grille à partir de code C#
Mon problème est: je ne peux pas savoir comment activer /désactiver la visibilité de mon WPF colonne de la grille. Supposons suivant le balisage XAML:
<Grid x:Name="myGrid">
<Grid.RowDefinitions>
<RowDefinition x:Name="Row1" />
<RowDefinition x:Name="Row2" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" />
<ColumnDefinition x:Name="Column2" />
</Grid.ColumnDefinitions>
</Grid>
Aferwards la grille est remplie avec des contrôles etc. Maintenant, je veux masquer une colonne unique dynamiquement de mon code C#. J'ai essayé de réaliser ce par le réglage de la définition de la colonne de largeur à zéro, par exemple Column1.Width = 0
. Cela fonctionne, mais je n'aime pas trop cette solution, il n'y a vraiment pas de meilleure façon?
Je suis à la recherche de quelque chose comme myGrid.Columns[0].Visibility = COLLAPSED
ou Column1.Visibility = HIDDEN
. Je ne peux pas trouver quelque chose comme ça - des idées?
Qu'attendez-vous pour arriver aux commandes de cette colonne?
Lors de l'effondrement de la colonne je veux rassembler tous les contrôles contenus, trop - de sorte que l'ensemble de la colonne dont le contenu doit être invisible
Double Possible de Masquer la ligne de la grille de WPF
OriginalL'auteur sebi | 2013-10-07
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire est d'ajouter un nommé
Grid
comme le plus haut niveau de contrôle dans la colonne que vous souhaitez masquer. Ensuite, vous pouvez simplement le cacher et l'ensemble de son contenu comme vous le feriez pour tout autre contrôle:En XAML:
Ensuite dans le code behind:
Que vous avez plus d'une ligne dans votre
Grid
, vous pouvez les réorganiser comme ceci:Mise à JOUR >>>
Il n'est pas vraiment nécessaire de réorganiser le principal
Grid
comme ça... vous pourrait tout aussi facilement ajouter deuxGrid
contrôles, un dans chaque ligne de la colonne et ensuite définir laVisibility
d'eux:Vous pouvez même ajouter un
Grid
dans chaque cellule de la principaleGrid
et avoir le plein contrôle sur lequel les cellules sont visibles à tout moment.même si vous avez des ennuis si vous souhaitez masquer une colonne ET une ligne simultanément
L'effondrement de tous les éléments dans une ligne/colonne uniquement s'effondre ligne/colonne, si sa hauteur/largeur est réglé sur "Auto". Regardez: codeproject.com/articles/437237/wpf-grid-column-and-row-hiding si vous souhaitez réduire.
OriginalL'auteur Sheridan
Dans WPF Grille de Ligne et de Colonne Cacher sur le Projet de Code, ils montrent un chemin à l'aide des propriétés de dépendance. Ils ont mis
Visible = false
, mais en interne, il définitWidth = 0
.Une autre idée est de supprimer la définition de la colonne dans le code derrière... Mais je suppose que c'est encore pire hack! 🙁
OriginalL'auteur sexta13
Un vilain hack serait juste changer la largeur à 0 (hors de vue, hors de l'esprit).
Il y a beaucoup de raisons pour lesquelles vous ne devriez pas faire cela, mais, en fonction de votre situation, il peut suffire!
OriginalL'auteur Dave
S'il vous plaît ne implémenter INotifyPropertyChanged dans votre ViewModel
OriginalL'auteur Morlo Mbakop
Utilisation suivantes pour Masquer la grille. De même, vous pouvez masquer la ligne des définitions et des définitions de colonne à l'aide de la propriété Nom.
myGrid.Visibilité = Système.De Windows.La visibilité.Caché;
S'il vous plaît re-lecture de la question.
Vous ne pouvez pas cacher de ligne/colonne définitions de cette manière.
OriginalL'auteur Raj