在WP7中设置网格边框

时间:2011-09-25 13:07:52

标签: xaml windows-phone-7

我正在尝试使用边框创建网格,但是使用此代码,只有第一个单元格具有边框:

<Grid Margin="24,96,24,288" d:LayoutOverrides="GridBox">
    <Grid.RowDefinitions>
        <RowDefinition Height="0.150*"/>
        <RowDefinition Height="0.150*"/>
        <RowDefinition Height="0.150*"/>
        <RowDefinition Height="0.150*"/>
        <RowDefinition Height="0.150*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
        <ColumnDefinition Width="0.150*"/>
    </Grid.ColumnDefinitions>
    <Border BorderBrush="#FFFFFF" BorderThickness="1"/>
</Grid>

如何为所有单元格创建实体边框?

1 个答案:

答案 0 :(得分:27)

将网格打包到 a Border

<Border  BorderBrush="#FF0000" BorderThickness="5" Margin="24,96,24,288">
    <Grid>
       ....
    </Grid>
</Border>

你的方法是将一个Border元素添加到 Grid-Control中 - 当然第一个单元格(如果你没有设置Grid.Row / Grid.Column,则默认为0)用一个绘制;)

如果要为每个单元格创建边框,则必须将每个内容包装到Border-element中,或者必须编辑网格的模板。 作为另一种选择,您可以尝试设置网格样式(这里是一个很好的article) 以下是本网站关于类似事情的另一个问题:Styling a WPF layout grid background

为了使这一点更清晰,为每个单元格获得(偶数)边界的最简单(如果不是最精炼)方法是为每个单元格自己设置边界并为网格自己设置(在标记或代码中) - 这是一个简化的例子:

<Border BorderBrush="#FF0000" BorderThickness="2" Grid.Row="0" Grid.Column="0" Margin="24,96,24,288" >
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <Border BorderBrush="#FF0000" BorderThickness="2" Grid.Row="0" Grid.Column="0"/>
            <Border BorderBrush="#FF0000" BorderThickness="2" Grid.Row="0" Grid.Column="1"/>
            <Border BorderBrush="#FF0000" BorderThickness="2" Grid.Row="1" Grid.Column="0"/>
            <Border BorderBrush="#FF0000" BorderThickness="2" Grid.Row="1" Grid.Column="1"/>
    </Grid>
</Border>