est-il possible d'augmenter la distance d'un séparateur de grille à partir de laquelle l'utilisateur peut l'attraper? p>
Mon séparateur n'est que 1px en largeur. J'aimerais pouvoir attraper le séparateur d'une plus grande distance. P>
Comme il est maintenant, je dois pointer la souris sur la ligne exacte de 1px pour la saisir. P>
et le séparateur doit toujours être 1px en largeur p>
3 Réponses :
Vous pouvez modifier la taille réelle du L'exemple utilise la méthode consistant à donner au séparateur sa propre colonne, mais le même principe s'applique s'il reste ou à droite aligné dans une colonne partagée. p> p> Gridsplitter code> tout en le gardant comme il est plus petit. Cela vous donnera une zone de largeur de 7 pixels pour l'attraper tout en montrant à 1 pixel:
Ceci est correct, mais je devais changer le zindex de la grille de la grille, car ce côté droit a été caché par un dockpanel.
Quel est le but de margin = "- 3,0"? Vous voulez que le séparateur horizontal est aligné dans la zone de 7 pixels au lieu de centré?
Les marges négatives créent l'espace supplémentaire de chaque côté pour la bordure transparente 3 px pour remplir la mise en page. Sans que le séparateur ne dispose que de la colonne 1 px pour rendre.
Il convient également de noter que borgnebrush = "transparent" code> est la clé. Si vous le laissez comme la valeur par défaut (
pas de brosse code>), cela ne fonctionne pas.
Pour clarifier le commentaire de @ Eriktj: vous devez placer le gredipsplitter après b> les autres éléments de la grille (inférieur dans le code source), il ne sera donc pas couvert par eux.
Je n'ai pas pu obtenir la solution de John Bowen au travail. Cela semblait avoir fonctionné, mais il semblait que le séparateur n'avait que 1 pixel d'espace grab.
J'ai fini par faire cela: P>
<Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <Stackpanel Grid.Row="0"/> <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" BorderBrush="DarkGray" Height="6" Background="Transparent" BorderThickness="0,1,0,0" Margin="0,0,0,-4"/> <Stackpanel Grid.Row="2"/> </Grid>
Le problème avec cette technique est qu'il met la ligne grise en haut de la zone de 6 pixels où vous pouvez saisir la ligne grise. Êtes-vous sûr de ne pas oublier simplement de retourner des valeurs dans votre traduction de la réponse de John de Vertical à Horizontal? Cela a fonctionné pour moi (zone de 5 pixels à saisir, ligne grise dans le centre de la zone):
Je sais que c'est une question antique, mais je pensais ajouter ma réponse quand même. Après beaucoup d'expériences, il semble que ce qui suit semble fonctionner parfaitement pour un testé avec le code suivant: p> Sans le modèle, la "zone saisissante de la souris" est de 1 pixel. Mais défini comme ci-dessus avec le gabarit, il est augmenté à 7 pixels qui est à peu près correct. Le même code peut être ajusté pour une ligne de largeur de pixels de 2 ou plus, en modifiant le J'utilise 2 pixels largeur Important: la largeur code> code> doit être réglée sur 3 ou 4 dans ce cas de 2 Ligne de largeur de pixel. p> p> Gridsplitter
code>
textblock code>
largeur code>,
bord de la bordure code> et
largeur de colonne code>. Vous pouvez rendre la souris grab ridiculement énorme mais le problème est que l'augmentation n'est que sur le côté gauche; Ce n'est pas centré sur la ligne, qui devient plus remarquable, plus vous l'augmentez. Mais pour une ligne étroite, c'est un moyen facile d'augmenter la prise de la souris à quelque chose d'utilisable. P>
Ismousever code> propriétés et telle: p>