Come possiamo impostare il bordo e il colore di sfondo nel controllo griglia WPF,
sto creando righe e colonne dinamicamente e aggiungendo poi alla griglia,
possiamo impostare il colore e il bordo da il codice dietro?Come impostare il bordo di riga e il colore di sfondo nella griglia WPF
risposta
Il colore Background
può solo essere impostato per l'intero Grid
utilizzando la proprietà Background
:
<Grid Background="Red" />
O se lo si desidera impostare per le singole celle, è necessario aggiungere un elemento alla cella che ha il suo Background
insieme di proprietà.
Come per i bordi, un Grid
contiene solo la proprietà ShowGridLines
, che può essere utilizzata per mostrare linee tratteggiate sottili che non possono essere disegnate.
Per MSDN:
Solo linee tratteggiate sono disponibili perché questa proprietà è inteso come uno strumento di progettazione per problemi di layout di debug e non è inteso per uso nel codice qualità produzione. Se desideri linee all'interno di una griglia, regola gli elementi all'interno della griglia per disporre di bordi.
Quindi, al fine di aggiungere bordi a griglia, si deve aggiungere Border
elementi o controlli che contengono un Border
alle celle della griglia, e lo stile di questi elementi.
Ma c'è un'alternativa. This blog post descrive come estendere la classe Grid per creare una griglia personalizzata con proprietà per le linee Grid
. L'ho usato successfully in the past quando volevo rendere le linee della griglia, ma non volevo riempire ogni cella con un oggetto.
<my:CustomGrid ShowCustomGridLines="True"
GridLineBrush="Blue"
GridLineThickness="1">
dipende da cosa si intende fare con questa griglia ma presumo che si voglia popolare le celle della griglia con i controlli.
È necessario impostare le proprietà Background e border (Stroke) sui controlli o incapsulare prima ciascuno dei controlli in un bordo.
Ma, ovviamente, se si desidera lo stesso colore di sfondo per ogni cella, impostare lo sfondo della griglia. :)
spero di aver risposto bene.
Ecco un po 'di trucco che sembra funzionare bene. Se si posiziona un elemento di sfondo nelle righe/colonne insieme agli elementi normalmente posizionati lì, esso fungerà da sfondo. Dovrai solo badare all'ordinamento degli elementi in XAML (gli elementi appaiono in ordine crescente Z), o impostare il Panel.Zorder di conseguenza.
<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>
Ecco come si presenta: