Wie füge ich in C #/WPF einen Rahmen in mein Raster ein?
Dies ist, was ich möchte, aber es setzt einen Rahmen um die ganze Sache anstatt der Rastersteuerung, die ich in meine Anwendung stecke.
<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 ...
Wenn Sie nur eine äußere Grenze wünschen, können Sie diese am einfachsten in eine Border-Kontrolle setzen:
<Border BorderBrush="Black" BorderThickness="2">
<Grid>
<!-- Grid contents here -->
</Grid>
</Border>
Der Grund, warum Sie sehen, dass der Rahmen Ihr Steuerelement vollständig ausfüllt, besteht darin, dass HorizontalAlignment und VerticalAlignment standardmäßig auf Stretch gesetzt sind. Versuche Folgendes:
<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>
Dies sollte Ihnen das geben, was Sie wollen (obwohl Sie vielleicht einen Rand auf alle 4 Seiten setzen möchten, nicht nur auf 2 ...)
Wenn Sie Ihr Raster in einer Grenzkontrolle verschachteln
<Border>
<Grid>
</Grid>
</Border>
wenn Sie nicht das tun, was Sie möchten, müssen Sie Ihre eigene Steuerungsvorlage für das Raster (oder den Rahmen) erstellen, das TUN macht, was Sie möchten.
Dies ist eine spätere Antwort, die für mich funktioniert, wenn sie in der Zukunft für jeden von Nutzen sein kann. Ich wollte eine einfache Umrandung um alle vier Seiten des Gitters und habe es so erreicht ...
<DataGrid x:Name="dgDisplay" Margin="5" BorderBrush="#1266a7" BorderThickness="1"...
Ich denke, Ihr Problem ist, dass der Rand im Rahmen und nicht im Raster angegeben werden sollte.
Wenn sich jemand für das ähnliche Problem interessiert, aber nicht mit XAML arbeitet, ist hier meine Lösung:
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>
Dieser Code umschließt einen Rand innerhalb des "innerGrid"