2012-06-28 86 views

答えて

12

Background色がちょうどBackgroundプロパティを使用して、全体Gridに設定することができます。

<Grid Background="Red" /> 

それとも、それは個々のセルに対して設定したい場合、あなたはそのを有する細胞に要素を追加する必要がありますBackgroundプロパティセット。

境界線の場合、GridにはShowGridLinesプロパティのみが含まれています。これは、スタイリングできない細い点線を表示するために使用できます。 MSDNパー

:このプロパティは、デバッグレイアウトの問題に 設計ツールとして意図されており、 生産品質のコードで使用するためのものではありませんので、

のみ点線が用意されています。グリッド内の線を使用する場合は、グリッド内の 要素に罫線を付けるようにスタイルを設定します。

だからあなたのグリッドに境界線を追加するために、あなたはBorder要素やグリッド・セルにBorderが含まれているコントロール、およびスタイルそれらの要素を追加する必要があります。

しかし、代替手段があります。 This blog postは、Gridクラスを拡張して、Grid行のプロパティを持つカスタムグリッドを作成する方法を概説しています。私はグリッドラインをレンダリングしたいときにsuccessfully in the pastを使用しましたが、すべてのセルにオブジェクトを塗りたくありませんでした。

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

これは、このグリッドで何をしようとしているかによって異なりますが、グリッドのセルにコントロールを設定したいとします。

コントロールに背景と境界(ストローク)プロパティを設定したり、各コントロールを境界内に最初にカプセル化する必要があります。

もちろん、各セルの背景色を同じにしたい場合は、グリッドの背景を設定します。 :)

私はうまく答えてくれることを願っています。

27

ここではうまくいくと思われるハックです。行/列に背景要素を配置し、そこに通常配置する要素を配置すると、その要素は背景として機能します。 XAMLの要素の順序を気にする必要があります(要素が増加するZ-順序で表示されます)。それに応じてPanel.Zorderを設定します。

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

それは次のようになります。

enter image description here

関連する問題