2012-06-28 21 views

risposta

12

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"> 
0

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.

27

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:

enter image description here

Problemi correlati