我有一个 WPF ListView,我将其用作 GridView。有什么办法可以在那里获得垂直网格线吗?
ListView 指定了 MinHeight,因此我希望 GridLine 一直到达网格底部,这样它将填充空白空间。
这似乎是一个相当棘手的问题。是否可以解决?
我就是这样做的。
<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>
The SharedSizeGroup
and Grid.IsSharedSizeScope
属性是这种方法的关键。这Margin="0,-2"
财产在Border
确保分界线看起来像一条连续的垂直线。如果向两个文本块添加垂直边距,则需要增加边框的负垂直边距。
这将负责将内容排列成两个大小统一的列,它们之间有一条垂直线,但它不会扩展到没有数据的区域。如果您需要该功能,ListView 可能不是最佳选择。
Adding some data to the MyList
property in the ViewModel gives this as a result:
当然,MyList
属性必须是具有以下属性的类的列表或集合Name
and DateModified
作为属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)