Je veux ajouter un séparateur vertical à une grille, mais je ne peux trouver que l'horizontale. N'y a-t-il pas une propriété, où vous pouvez entrer si la ligne du séparateur doit être horizontale ou verticale?
J'ai beaucoup cherché, mais je n'ai pas trouvé de solution courte et facile à cela.
J'utilise .Net Framework 4.0 et Visual Studio Ultimate 2012.
Si j'essaie de faire pivoter le séparateur horizontal de 90 degrés, il perd la capacité de «s'ancrer» sur d'autres composants.
Le séparateur tourné ressemble à ceci:
<Separator HorizontalAlignment="Left" Height="100" Margin="264,26,0,0" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.5,0.5">
<Separator.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</Separator.RenderTransform>
</Separator>
wpf
xaml
visual-studio-2012
separator
Martin Weber
la source
la source
Rectangle
?Border
peut aussi être une solution ..Réponses:
Cela devrait faire exactement ce que l'auteur voulait:
si vous voulez un séparateur horizontal, remplacez
Orientation
leStackPanel
parVertical
.la source
RenderTransform
. Raccourci soigné à retenir :)Menu
entre lesMenuItem
s. S'étire toujours bien pour correspondre à la hauteur / largeur du menu.Ce n'est pas exactement ce que l'auteur a demandé, mais c'est tout de même très simple et fonctionne exactement comme prévu.
Rectangle fait le travail:
la source
<Rectangle HorizontalAlignment="Stretch" Height="3" Margin="-1,6" Stroke="Black" Fill="White" />
Dans le passé, j'ai utilisé le style trouvé ici
Vous devez définir la transformation dans
LayoutTransform
au lieu deRenderTransform
pour que la transformation se produise pendant l'étape de mise en page, et non pendant l'étape de rendu. L'étape de mise en page se produit lorsque WPF tente de mettre en page des contrôles et de déterminer l'espace occupé par chaque contrôle, tandis que l'étape de rendu se produit après la passe de mise en page lorsque WPF tente de rendre des contrôles.Vous pouvez en savoir plus sur la différence entre
LayoutTransform
etRenderTransform
ici ou icila source
DockPanel
, vous devriez être en mesure de réglerDockPanel.Dock
leSeparator
côté de votre choix. Avec WPF, le panneau hébergeant le contrôle détermine généralement la position du contrôle et parfois même la taille par défaut. Si vous êtes nouveau dans les mises en page de WPF, je vous recommande de lire cet article: WPF Layouts - A Visual Quick StartJ'aime utiliser le contrôle "Ligne". Il vous donne un contrôle précis sur le début et la fin du séparateur. Bien que ce ne soit pas exactement un séparateur, il fonctionne de la même manière, en particulier dans un StackPanel.
Le contrôle de ligne fonctionne également dans une grille. Je préfère utiliser StackPanel car vous n'avez pas à vous soucier du chevauchement des différents contrôles.
X1 = x position de départ (doit être 0 pour une ligne verticale)
X2 = x position finale (X1 = X2 pour une ligne verticale)
Y1 = y position de départ (doit être 0 pour une ligne verticale)
Y2 = position de fin y (Y2 = hauteur de ligne souhaitée)
J'utilise "margin" pour ajouter un rembourrage de n'importe quel côté de la ligne verticale. Dans ce cas, il y a 5 pixels à gauche et 10 pixels à droite de la ligne verticale.
Étant donné que le contrôle de ligne vous permet de choisir les coordonnées x et y du début et de la fin de la ligne, vous pouvez également l'utiliser pour les lignes horizontales et les lignes à n'importe quel angle entre les deux.
la source
C'est un moyen très simple de le faire sans fonctionnalité et sans effet visuel,
Utilisez une grille et personnalisez-la simplement.
Juste une autre façon de le faire.
la source
<Grid HorizontalAlignment="Stretch" Height="1" Margin="0,10" Background="Black"/>
Séparateur vertical
séparateur horizontal
la source
De http://social.msdn.microsoft.com/Forums/vstudio/en-US/12ead5d4-1d57-4dbb-ba81-bc13084ba370/how-can-i-add-a-line-as-a-visual-separator -to-the-content-control-like-grid? forum = wpf :
Essayez cet exemple et voyez s'il répond à vos besoins, il comporte trois aspects principaux.
Line.Stretch est configuré pour remplir.
Pour les lignes horizontales, l'alignement vertical de la ligne est défini en bas et pour les lignes verticales, l'alignement horizontal est défini sur la droite.
Nous devons ensuite indiquer à la ligne le nombre de lignes ou de colonnes à couvrir, cela se fait en liant à la propriété de nombre RowDefinitions ou ColumnDefintions.
la source
utilisation
la source
Voici comment je l'ai fait:
la source