有啥方法可以在不同的行中显示 GridView 的列?
Posted
技术标签:
【中文标题】有啥方法可以在不同的行中显示 GridView 的列?【英文标题】:is there any way to show the columns of a GridView in different rows?有什么方法可以在不同的行中显示 GridView 的列? 【发布时间】:2020-10-12 17:41:26 【问题描述】:我有一个 ListView,它将显示 Google 日历事件的一些值,该应用程序可让您查看某个特定日期的事件,您可以添加更多、编辑或删除事件。
目前,我正在显示所有事件仅用于测试,并且我正在使用网格视图来重新排序属性和标题,但是该事件的值太多并且太宽,我想要的是拆分这个两行列
A 列、B 列、C 列 信息信息信息
D 列、E 列... 信息信息
对于每个元素。
而不是 A、B、C 列... 信息信息信息信息
在一行中。
有没有办法用gridview 做到这一点?或者我必须辞职并使用自定义控件或网格做类似的事情。
我的列表视图
<ListView Background="Transparent"
x:Name="DatosEvento"
Margin="5"
MinWidth="Binding ActualWidth, ElementName=Calendar"
Width="Auto"
ItemsSource="Binding Path=Eventos"
Grid.Row="1"
Grid.Column="1">
<ListView.View>
<GridView>
<GridViewColumn Header="Organizador" DisplayMemberBinding="Binding Path=Organizer.DisplayName" />
<GridViewColumn Header="Correo Organizador">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Binding Path=Organizer.Email" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Nombre Evento" DisplayMemberBinding="Binding Path=Summary"/>
<GridViewColumn Header="Estado" DisplayMemberBinding="Binding Path=Status"/>
<GridViewColumn Header="Fecha Fin" DisplayMemberBinding="Binding Path=End.Date"/>
<GridViewColumn Header="Actualizado el" DisplayMemberBinding="Binding Path=Updated.Date"/>
<GridViewColumn Header="Enlace">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Binding Path=htmlLink" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
【问题讨论】:
这在默认的GridView
下是不可能的。这种布局的问题是用户必须向下滚动才能找到下一列。如果您的表有 1,000 行,则用户必须滚动所有这些行才能找到下一列的数据。这远非直观,并且对数据集的可读性产生负面影响,因为相关数据即行将被分开。与其垂直滚动查找列,不如垂直滚动更方便。如果列在GridView
的视口之外,垂直滚动条将自动显示。
也许您选择的视图或控件是错误的选择。也许你应该以不同的方式呈现你的数据。也许你应该创建一个事件项数据类,它存储单个事件的事件数据。然后使用此事件项的集合填充ListBox
,其中ListBox.ItemPanel
设置为使用WrapPanel
。您可以设置此面板的宽度以控制发生换行之前的项目数。
好的,我正在混合使用 gridview 和 stackpanels 来做类似的事情,感谢您的回答
【参考方案1】:
由于我无法将评论标记为解决方案,因此我已更改网格视图以混合使用 wrap 和 stackpanels,正如 @BionicCode 建议的那样(他建议 wrappanel 我刚刚添加了一些 stackpanel 来做类似于 gridview 的事情)
【讨论】:
以上是关于有啥方法可以在不同的行中显示 GridView 的列?的主要内容,如果未能解决你的问题,请参考以下文章
android的:tableLayout和gridview有啥不同