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 ...
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 ...)
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.
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"...
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.
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);
<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"