假设我有一个非常简单的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中执行此操作?
答案 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)