8

假设我有一个非常简单的 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 网格线):

在此处输入图像描述

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

4

1 回答 1

17

您可以将Lines 放置在所需单元格的顶部,方法是设置VerticalAlignment="Top"、适当Grid.ColumnSpan的 和设置StrokeDashArray以获得虚线。

编辑:以上只是我的想法,我显然忘记了 WPF 的一些“功能”。

这是我开始工作的样本。我把它放在一个有 5 行和 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",但请注意,行的上半部分将被剪裁。

于 2012-06-28T21:00:06.380 回答