2010-05-04 39 views
95

Wie setze ich einen Rahmen in C#/WPF?Wie lege ich einen Rahmen in WPF fest?

Dies ist, was ich möchte es zu sein, sondern legt eine Grenze um das ganze Ding anstelle der Gittersteuerung, die ich in meiner Anwendung einlege.

<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 ... 
+1

Was meinst du mit "ganze Sache"? Ich vermute, du hast noch etwas anderes in deinem Raster - du solltest vielleicht posten, was das ist. Mein Verdacht ist, dass Sie sowohl eine Art DataGrid-Kontrolle als auch Ihren Gittercontainer haben (was Sie in Ihre Probe getan haben und vermutlich das "Ganze" enthalten würden), und hier entsteht die Verwirrung. –

Antwort

171

Wenn Sie nur eine äußere Grenze wollen, ist der einfachste Weg, es in einer Grenzkontrolle zu setzen:

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

Edit:

Der Grund Sie sehen die border vollständig füllen Sie Ihre Kontrolle ist, dass standardmäßig HorizontalAlignment und VerticalAlignment auf Stretch festgelegt sind. Versuchen Sie 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 sollten Sie, was Sie wollen (obwohl Sie wollen einen Seitenrand auf allen 4 Seiten setzen kann, nicht nur 2 ...)

+0

es funktioniert nicht wie ich will ... Ich habe einen Code zu meiner Frage hinzugefügt. – Jason94

+3

@ Jason94: Ich aktualisierte meine Antwort, um Ihnen zu zeigen, wie Sie bekommen, was ich denke, Sie sind ... –

+0

@ReedCopsey Reed, ich weiß, dass Ihre Lösung funktioniert, was ich nicht verstehe ist, warum das Border-Element im Grid ist Element - ist das nicht gegensätzlich? Vielen Dank. – Sabuncu

5

Wenn Ihr Raster nisten in eine Grenzkontrolle

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

nicht tun, was Sie wollen, dann werden Sie haben Ihre eigene Steuervorlage für das Gitter (oder Grenze), das tut, was Sie machen wollen.

+0

oh ... okey: D dachte, es gäbe eine Variable, die ich übersehen oder etwas Phantasie WPF (ich bin neu: D) – Jason94

+0

Sie können keine Vorlage für Raster und Rahmen erstellen, da sie keine Template-Eigenschaft haben, da sie nicht von Control abgeleitet sind , aber von Panel und Decorator. [Reed Copsey hat die (ziemlich einfache) Lösung] (http://stackoverflow.com/questions/2769291/how-do-i-put-a-border-on-my-grid-in-wpf/2769312#2769312) . – gehho

1

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

0
<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 eine Grenze innerhalb des "innerGrid" Wrap

+0

Es funktioniert nicht –

+0

Hallo @ElvinMammadov. Kannst du mehr beschreiben? Erhalten Sie irgendwelche Fehler? Dieser Code funktioniert gut für mich. – PJ3

Verwandte Themen