J'ai une page WPF, avec une grille dessus. p>
Il y a trois rangées. La rangée 0 contient une grille avec Voici la chose - j'ai un bouton qui est censé basculer la visibilité du formulaire de détails. Et cela fonctionne juste bien. Sauf que cela cache simplement le formulaire de la rangée 2, il n'élargit pas la grille dans la rangée 0 pour remplir l'espace. Ce que je veux, c'est pour le bouton de basculer GridView dans la rangée 0 pour prendre tout l'espace, puis pour basculer à l'endroit où les choses étaient. P>
Jouant clairement avec la visibilité du formulaire à l'intérieur de la ligne ne pourra pas accomplir ce que je veux. P>
Mais que dois-je jouer avec? P> hauteur = "*" code>. La rangée 1 contient un plat de grille avec
hauteur = "auto" code>. La ligne 2 contient un formulaire de détails avec
hauteur = "2 *" code>. P>
4 Réponses :
J'ai dû introduire une propriété de dépendance jointe pour gérer cela dans ma propre application:
private static int GetPrevious(GridSplitter gridSplitter, int index) { switch (gridSplitter.ResizeBehavior) { case GridResizeBehavior.PreviousAndNext: case GridResizeBehavior.PreviousAndCurrent: return index - 1; case GridResizeBehavior.CurrentAndNext: return index; case GridResizeBehavior.BasedOnAlignment: default: throw new NotSupportedException(); } } private static int GetNext(GridSplitter gridSplitter, int index) { switch (gridSplitter.ResizeBehavior) { case GridResizeBehavior.PreviousAndCurrent: return index; case GridResizeBehavior.PreviousAndNext: case GridResizeBehavior.CurrentAndNext: return index + 1; case GridResizeBehavior.BasedOnAlignment: default: throw new NotSupportedException(); } }
Ce contrôle gridexpander qui hérite de former des grewspliter qui pourrait au travail que vous recherchez. Le crédit va à
Supposons que j'ai cette mise en page xaml: puis je peux masquer le second contrôle (réduisez le séparateur vers le bas) avec ce code (équivalent du paramètre et non couler avec ce code (équivalent du paramètre C'est ce que le séparateur suctère lorsque l'utilisateur le déplace. P> p> hauteur = "0" code> in xaml): p>
hauteur = "1 *" code> dans xaml, qui est la valeur par défaut pour une rowdefinition): p>
Grande solution! J'ai même configuré la liaison pour la dernière propriété Hauteur RowDefinition, au lieu de devoir le faire en code. J'hésitant à mettre en œuvre la solution acceptée comme cela impliquait beaucoup de code. C'était beaucoup plus simple et travaillé tout de suite. Merci!
Si quiconque veut une solution purement XAML, j'ai pu évoquer un moyen de masquer le séparateur et la ligne pertinente à l'aide de styles, de setters et de déclencheurs.
J'ai utilisé une ressource statique pour mon style, qui a été réglé sur Modifier la hauteur code> et J'ai simplement appliqué le style sur le Définitions de ligne, et cela a fonctionné comme un charme: p> notable est que je l'ai essayé sans la propriété MaxHeight, et cela ne s'effondrait pas correctement. L'ajouter semble avoir fait le tour pour moi. P> p> maxheight code> lorsqu'un booléen lié spécifique a été défini. p>
Je n'ai pas réalisé que je pourrais avoir des styles pour les définitions de ligne / colonne. Agréable! Merci.