2012-04-06 75 views
3

我有一个WPF ListView,我用它作为GridView。有什么方法可以在那里获得垂直网格线?ListView中的垂直网格线

ListView具有指定的MinHeight,所以我希望GridLine一路走到网格的底部,所以它会填充空白空间。

这似乎是一个相当棘手的问题。是可以解决的吗?

+0

你是否检查这个问题http://stackoverflow.com/questions/5645078/how-to-put-vertical-lines-for-listviewitem-in-wpf – Habib 2012-04-06 16:05:10

+0

这是一个开始,但不是我要找的东西。网格线没有排列在标题下,也没有显示它将一直绘制到列表视图的底部 – 2012-04-06 16:28:14

回答

1

这就是我的做法。

 <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可能不是最好的选择。

添加一些数据的视图模型的MyList属性给出这个结果: enter image description here

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

+1

这不起作用。 – 2017-02-25 04:56:49