【问题标题】:WPF Grid - Drawing Custom Grid LinesWPF Grid - 绘制自定义网格线
【发布时间】:2012-06-28 19:35:44
【问题描述】:

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

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

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

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

    这是我工作的示例。我把它放在一个有 5 行和 5 列的 Grid 中,星形大小。

    <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",但请注意,行的上半部分会被剪掉。

    【讨论】:

    • 我已经尝试了您的建议,但由于某种原因,该行不显示。我的 XAML 如下:
    • 我的错。我认为那是因为这条线很奇怪,因为它可以在没有实际拉伸的情况下拉伸。我正在寻找解决方案。
    • @RandyMinder 您是否设置了X2 属性?它定义了线条的宽度
    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多