it-swarm.com.de

Festlegen von Zeilenumrandung und Hintergrundfarbe im WPF-Raster

Wie können wir im WPF-Grid-Steuerelement Rahmen- und Hintergrundfarbe festlegen,
Ich erstelle dynamisch Zeilen und Spalten und füge dann das Raster hinzu.
können wir Farbe und Rand aus dem Code hinterher setzen?

17
Buzz

Die Background-Farbe kann nur für die gesamte Grid mithilfe der Background-Eigenschaft festgelegt werden: 

<Grid Background="Red" />

Wenn Sie möchten, dass es für einzelne Zellen festgelegt wird, müssen Sie der Zelle ein Element hinzufügen, für das die Background-Eigenschaft festgelegt ist.

In Bezug auf Rahmen enthält eine Grid nur die ShowGridLines-Eigenschaft, mit der dünne gepunktete Linien angezeigt werden können, die nicht mit einem Stil versehen werden können.

Per MSDN:

Es sind nur gepunktete Linien verfügbar, da diese Eigenschaft als .__ gedacht ist. Designtool zum Debuggen von Layoutproblemen und ist nicht zur Verwendung in .__ vorgesehen. Produktionsqualitätscode. Wenn Sie Linien in einem Raster wünschen, formatieren Sie die Elemente innerhalb des Rasters haben Grenzen.

Um dem Grid Rahmen hinzuzufügen, müssen Sie den Grid-Zellen Border-Elemente oder Steuerelemente hinzufügen, die Border enthalten, und diese Elemente formatieren.

Es gibt aber eine Alternative. In diesem Blogbeitrag wird beschrieben, wie Sie die Grid-Klasse erweitern können, um ein benutzerdefiniertes Grid mit Eigenschaften für Grid-Zeilen zu erstellen. Ich habe es in der Vergangenheit erfolgreich verwendet, als ich Rasterlinien rendern wollte, aber nicht jede Zelle mit einem Objekt füllen wollte.

<my:CustomGrid ShowCustomGridLines="True"
               GridLineBrush="Blue"
               GridLineThickness="1">
16
Rachel

Hier ist ein bisschen ein Hack, der gut zu funktionieren scheint. Wenn Sie ein Hintergrundelement in den Zeilen/Spalten zusammen mit den Elementen platzieren, die Sie normalerweise dort platzieren würden, fungiert es als Hintergrund. Sie müssen nur die Reihenfolge der Elemente in der XAML beachten (die Elemente werden in aufsteigender Z-Reihenfolge angezeigt) oder die Panel.Zorder entsprechend einstellen.

<Window x:Class="gridBackground.MainWindow"
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
        <Border Background="Red" />
        <Border Grid.Row="2" Grid.Column="1"  Background="Red" />        
        <Border  Grid.Row="1" Background="LightBlue" />       
        <Border Grid.Row="2" Background="Orange" />
        <Border Grid.Row="0" Grid.Column="1" Background="Orange" />
        <TextBlock Grid.ColumnSpan="2" Grid.Row="1" Text="Here is some more text" HorizontalAlignment="Center"  VerticalAlignment="Center"/>
        <TextBlock Grid.ColumnSpan="2" Text="Here is some text" HorizontalAlignment="Center"  VerticalAlignment="Center"/>
        <TextBlock Grid.ColumnSpan="2" Grid.Row="2" Text="Here is even more text" HorizontalAlignment="Center"  VerticalAlignment="Center"/>
    </Grid>
</Window>

Es sieht aus wie das:

enter image description here

32

es hängt davon ab, was Sie mit diesem Grid vorhaben, aber ich gehe davon aus, dass Sie die Zellen des Grids mit Steuerelementen füllen möchten.

Sie müssen die Hintergrund- und Rahmen- (Strich-) Eigenschaften für die Steuerelemente festlegen und dann zuerst alle Steuerelemente in einem Rahmen einkapseln.

Wenn Sie jedoch für jede Zelle die gleiche Hintergrundfarbe wünschen, legen Sie den Hintergrund des Rasters fest. :)

ich hoffe ich habe gut geantwortet.

0
Julien
<Border Grid.Row="12" Grid.Column="0" Grid.ColumnSpan="12" Background="#fff" BorderBrush="Blue" BorderThickness="2"/>
0
Cristian Oana