我有一个Grid
,其中包含3个大小相同的列。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
我想绘制一条水平线,使其从第一列的中间开始,到最后一列的中间结束。
<Line Grid.ColumnSpan="3" Stretch="Fill"
X1="0" X2="1" Y1="0" Y2="0"
VerticalAlignment="Center" HorizontalAlignment="Stretch"/>
所需的结果应该是下图中底部显示的行。
将Margins
硬编码到Line
这里不太可行。
如何实现?
答案 0 :(得分:2)
创建嵌套网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Line Grid.Column="1" Stretch="Fill" X2="1"/>
</Grid>
</Grid>
答案 1 :(得分:1)
这可能不是最好的&#34;方式...但是如果你使用边框而不是线条怎么办?然后使用颜色/透明渐变设置背景,在1/6和5/6点使用硬停止?
或者,您可以使用6个等距离的色谱柱,并从第2列进行4个色谱柱。不过,这会对网格中的其他项产生影响。
<Border Grid.ColumnSpan="3" BorderThickness="0" Height="5">
<Border.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="Transparent" Offset="0.1666"/>
<GradientStop Color="Transparent" Offset="0.8334"/>
<GradientStop Color="Red" Offset="0.1667"/>
<GradientStop Color="Red" Offset="0.8333"/>
</LinearGradientBrush>
</Border.Background>
</Border>