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

Ran*_*der 6 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>
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

我怎么能在XAML中这样做呢?

Ken*_*rey 14

您可以将Lines放在所需单元格的顶部,通过设置VerticalAlignment="Top"适当的Grid.ColumnSpan,并设置StrokeDashArray为获取虚线.

编辑:以上只是我的头脑,我显然忘记了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}}" />
Run Code Online (Sandbox Code Playgroud)

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