WPF网格 - 绘制自定义网格线

时间:2012-06-28 19:35:45

标签: wpf xaml

假设我有一个非常简单的WPF网格(6行x 6列),其定义如下:

<Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>

我想要如下绘制以下网格线(一条实线和两条虚线)(我在Excel中绘制了这个,所以忽略了轻型Excel网格线):

enter image description here

我如何在XAML中执行此操作?

2 个答案:

答案 0 :(得分:14)

您可以将Line放置在所需单元格的顶部,方法是设置VerticalAlignment="Top",相应的Grid.ColumnSpan,然后设置StrokeDashArray以获取虚线。< / p>

编辑:上面的内容刚刚脱颖而出,我显然忘记了WPF的一些“功能”。

以下是我工作的样本。我把它放在一个有5行和列的网格中,星号。

<Line Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2"
    VerticalAlignment="Center" Stroke="Black" StrokeThickness="1"
    X2="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />
<Line Grid.Row="1" Grid.Column="2" Grid.RowSpan="2" Grid.ColumnSpan="2"
    VerticalAlignment="Center" Stroke="Black" StrokeThickness="2" StrokeDashArray="5,3"
    X2="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" />

注意:如果行的大小不同,那将无法工作,因为它将行放在两行中心。如果它们的大小不同,则需要VerticalAlignment="Top",但要注意,该行的上半部分将被剪裁。

答案 1 :(得分:0)

网格单元格没有网格线,但只需将Rectangle(s)与显式Stroke(s)放在单元格中即可轻松实现效果......

编辑:没有注意到虚线要求,因为您可以在单元格中放置另一个网格,其中包含一行和所需数量的列,并将带有笔划的矩形放置在非对称单元格中...