ListView中的竖直网格线

4
我有一个用作网格视图的WPF ListView。是否可以在其中获取垂直网格线?ListView已指定MinHeight,因此我希望GridLine延伸到网格底部,以填充空白空间。这似乎是一个相当棘手的问题。是否可能解决?

你有检查过这个问题吗?https://dev59.com/qFbTa4cB1Zd3GeqP8Cq9 - Habib
这是一个开始,但不是我要找的。网格线没有对齐在标题下面,也似乎无法将它们绘制到列表视图底部。 - Jim B
1个回答

2
这是我的做法。
      <ListView Grid.IsSharedSizeScope="True"
                ItemsSource="{Binding Path=MyList,FallbackValue='12345'}" >
        <ListView.ItemTemplate>
          <DataTemplate>
            <Grid>
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="3*" SharedSizeGroup="col0"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="1*" SharedSizeGroup="col2"/>
              </Grid.ColumnDefinitions>
              <TextBlock Grid.Column="0" Margin="10,0"
                       Text="{Binding Path=Name, FallbackValue='Name goes here'}"/>
              <Border Grid.Column="1" Margin="0,-2"
                    BorderBrush="DarkGray" 
                    BorderThickness="0,0,1,0" />
              <TextBlock Grid.Column="2" Margin="10,0"
                       Text="{Binding Path=DateModified, FallbackValue='Date goes here'}"/>
            </Grid>
          </DataTemplate>
        </ListView.ItemTemplate>
      </ListView>
SharedSizeGroupGrid.IsSharedSizeScope属性是实现此目的的关键。在Border上的Margin="0,-2"属性确保分割线看起来像一条连续的垂直线。如果给两个文本块添加垂直边距,则需要增加边框的负垂直边距。

这将处理将事物排列成两个统一大小的列,并在它们之间放置垂直线,但它不会扩展到没有数据的区域。如果您想要该功能,则ListView可能不是最佳选项。

向ViewModel的MyList属性添加一些数据会产生以下结果: enter image description here

当然,MyList属性需要是一个具有NameDateModified属性的类的列表或集合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接