wake-up-neo.com

Wie füge ich in WPF einen Rahmen in mein Raster ein?

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 ...
103
Jason94

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

188
Reed Copsey

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.

7
Muad'Dib

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"...
1
georgehatzi

Ich denke, Ihr Problem ist, dass der Rand im Rahmen und nicht im Raster angegeben werden sollte.

1
surega

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

Dieser Code umschließt einen Rand innerhalb des "innerGrid"

0
PJ3