21

我们如何在 WPF 网格控件中设置边框和背景颜色,
我正在动态创建行和列然后添加到网格中,
我们可以从后面的代码中设置颜色和边框吗?

4

2 回答 2

44

这是一个似乎运作良好的hack。如果您将背景元素与通常放置在那里的元素一起放置在行/列中,它将充当背景。您只需要注意 XAML 中元素的顺序(元素以递增的 Z-Order 出现),或相应地设置 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>

它看起来像这样:

在此处输入图像描述

于 2013-09-23T19:15:01.577 回答
25

Background可以Grid使用以下属性Background为整体设置颜色:

<Grid Background="Red" />

或者,如果您希望为单个单元格设置它,则需要将一个元素添加到具有其Background属性集的单元格中。

至于Borders,aGrid只包含ShowGridLines属性,可以用来显示无法设置样式的细虚线。

根据 MSDN:

只有虚线可用,因为此属性旨在用作调试布局问题的设计工具,而不是用于生产质量代码。如果您想要网格内的线条,请将网格内的元素设置为具有边框。

因此,为了向网格添加边框,您必须将Border包含 a 的元素或控件添加Border到网格单元格,并设置这些元素的样式。

但有一个替代方案。此博客文章概述了如何扩展 Grid 类以创建具有Grid线属性的自定义 Grid。过去,当我想渲染网格线但不想用对象填充每个单元格时,我已经成功地使用过它。

<my:CustomGrid ShowCustomGridLines="True"
               GridLineBrush="Blue"
               GridLineThickness="1">
于 2012-06-28T12:51:02.877 回答