在Grid上绘制一条中心线,其宽度是自动设置的?

时间:2013-05-25 12:34:27

标签: c# wpf

我已经看到了几个类似的问题,但没有解决方案对我有用,可能是因为我的网格设置为Stretch。这是我想要实现的结果。基本上,我有一个网格,我想绘制一个X轴线(如本问题末尾的图片)。

我的XAML

<Grid x:Name="MainGrid" HorizontalAlignment="Stretch" Background="#FF4A70F1">

我的CodeBehind

        Line XAxis = new Line();
        XAxis.Stroke = System.Windows.Media.Brushes.Black;
        XAxis.StrokeThickness = 1;

        XAxis.X1 = 0;
        XAxis.X2 = MainGrid.RenderSize.Width;
        XAxis.Y1 = MainGrid.RenderSize.Height / 2;
        XAxis.Y2 = MainGrid.RenderSize.Height / 2;

        MainGrid.Children.Add(XAxis);

我的问题

我希望这条线跨越整个窗口,即使我调整窗口大小/最大化。但是,无论我使用ActualSize还是*RenderSize*,上面对X2,Y1,Y2的计算都不起作用(全部评估为0,因此显示为NO LINE)。有人可以指出如何解决这个问题吗?谢谢 to achieve

1 个答案:

答案 0 :(得分:2)

此XAML创建一个水平拉伸的垂直居中线:

<Grid>
    <Line HorizontalAlignment="Left" VerticalAlignment="Center" Stroke="Black"
          X2="{Binding ActualWidth,
               RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"/>
</Grid>