Listview 在分组的情况下,如何才能实现如下两种效果:
1、Group header的点击事件
2、Group下若无item,依然强制显示Group?
Winform 下Listview的改造
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-01 18:42关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在 WinForms 中,ListView 的 GroupHeader 和 GroupFooter 属性用于设置和获取列表视图中行标题(Group Header)和行脚注(Group Footer)的文本。以下是一个简单的示例,展示了如何使用这些属性来实现您所描述的效果。
首先,创建一个包含数据的数据源:
public class DataObject { public string Name { get; set; } public int Value { get; set; } }然后,在 ListView 控件上添加 GroupHeader 和 GroupFooter:
<ControlTemplate x:Key="DataViewGroupHeaderTemplate"> <Border Background="#ffffff" BorderBrush="#000000" BorderThickness="0,0,0,1"> <TextBlock Text="{Binding Path=Name}" Margin="5" FontSize="16"/> </Border> </ControlTemplate> <ControlTemplate x:Key="DataViewGroupFooterTemplate"> <Border Background="#ffffff" BorderBrush="#000000" BorderThickness="0,0,0,1"> <TextBlock Text="{Binding Path=Value}" Margin="5" FontSize="16"/> </Border> </ControlTemplate>接下来,使用 DataTemplate 来定义每个 GroupHeader 和 GroupFooter 的模板:
<DataTemplate x:Key="DataViewGroupHeaderItemTemplate"> <TextBlock Text="{Binding Path=Name}" Margin="5" FontSize="16"/> </DataTemplate> <DataTemplate x:Key="DataViewGroupFooterItemTemplate"> <TextBlock Text="{Binding Path=Value}" Margin="5" FontSize="16"/> </DataTemplate>最后,为 ListView 添加 GroupHeader 和 GroupFooter:
<ListView Grid.Row="1"> <ListView.GroupHeaderTemplate> <DataTemplate> <DataGridCellTemplate> <StackPanel Orientation="Horizontal"> <Button Content="<" Command="{x:Static SystemCommands.OpenInExplorer}" /> <DataTemplateSelector> <DataTemplate> <DataGridCellTemplate> <TextBlock Text="{Binding Path=Name}" Margin="5" FontSize="16"/> </DataGridCellTemplate> </DataTemplate> </DataTemplateSelector> </StackPanel> </DataGridCellTemplate> </DataTemplate> </ListView.GroupHeaderTemplate> <ListView.GroupFooterTemplate> <DataTemplate> <DataGridCellTemplate> <StackPanel Orientation="Horizontal"> <Button Content="<" Command="{x:Static SystemCommands.OpenInExplorer}" /> <DataTemplateSelector> <DataTemplate> <DataGridCellTemplate> <TextBlock Text="{Binding Path=Value}" Margin="5" FontSize="16"/> </DataGridCellTemplate> </DataTemplate> </DataTemplateSelector> </StackPanel> </DataGridCellTemplate> </DataTemplate> </ListView.GroupFooterTemplate> </ListView>现在,当用户单击 GroupHeader 或 GroupFooter 的按钮时,它将打开一个新的文件或窗口以显示对应的值。同时,如果 GroupFooter 下没有 item,则仍然会强制显示 GroupFooter。
解决 无用评论 打赏 举报