web-dev-qa-db-fra.com

Comment puis-je mettre une bordure sur ma grille dans WPF?

Comment mettre une bordure sur ma grille en C #/WPF?

C’est ce que je voudrais que ce soit, mais met une bordure autour du tout au lieu du contrôle de grille que je mets dans mon application.

<Grid>
    <Border BorderBrush="Black" BorderThickness="2">
        <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" />
    </Border>
... and so on ...
103
Jason94

Si vous voulez juste une bordure extérieure, le moyen le plus simple est de la placer dans un contrôle Bordure:

<Border BorderBrush="Black" BorderThickness="2">
    <Grid>
       <!-- Grid contents here -->
    </Grid>
</Border>

La raison pour laquelle vous voyez la bordure remplir complètement votre contrôle est que, par défaut, HorizontalAlignment et VerticalAlignment sont définis sur Stretch. Essayez ce qui suit:

<Grid>
    <Border  HorizontalAlignment="Left" VerticalAlignment="Top"  BorderBrush="Black" BorderThickness="2">
        <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" />
    </Border>
</Grid>

Cela devrait vous donner ce que vous recherchez (bien que vous souhaitiez peut-être laisser une marge sur les 4 côtés, pas seulement 2 ...)

188
Reed Copsey

Si imbriquer votre grille dans un contrôle de frontière 

<Border>
    <Grid>
    </Grid>
</Border>

ne fait pas ce que vous voulez, vous devrez alors créer votre propre modèle de contrôle pour la grille (ou la bordure) qui FAIT ce que vous voulez.

7
Muad'Dib

C’est une réponse ultérieure qui fonctionne pour moi, si elle peut être utile à n’importe qui à l’avenir. Je voulais une simple bordure autour des quatre côtés de la grille et je l'ai réalisée comme si ...

<DataGrid x:Name="dgDisplay" Margin="5" BorderBrush="#1266a7" BorderThickness="1"...
1
georgehatzi

Je pense que votre problème est que la marge doit être spécifiée dans l'étiquette de bordure et non dans la grille.

1
surega

Si quelqu'un s'intéresse au même problème, mais ne travaille pas avec XAML, voici ma solution:

var B1 = new Border();
B1.BorderBrush = Brushes.Black;
B1.BorderThickness = new Thickness(0, 1, 0, 0); //You can specify here which borders do you want
YourPanel.Children.Add(B1);
0
Artem K
<Grid x:Name="outerGrid">
    <Grid x:Name="innerGrid">
        <Border BorderBrush="#FF179AC8" BorderThickness="2" />
        <other stuff></other stuff>
        <other stuff></other stuff>
    </Grid>
</Grid>

Ce code Enveloppe une bordure à l'intérieur de la "innerGrid"

0
PJ3