当前位置: 首页 > news >正文

WPF DataGrid详细列表手动显示与隐藏

设置显示序号与折叠显示样式

<DataTemplate x:Key="dtNum"><Button BorderBrush="Transparent" Style="{x:Null}" Click="BtnRowDetail_ShowHideClick" FontSize="16" Background="Transparent"><StackPanel Orientation="Horizontal"><TextBlock x:Name="tag" Text=""/><!--注意此处绑定查询数据行序号值--><TextBlock Text="{Binding rownum}"/></StackPanel></Button>
</DataTemplate>

设置DataGrid详细列表

<DataGrid ItemsSource="{Binding}"AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="All"SelectionUnit="FullRow"RowDetailsVisibilityMode="Visible"ScrollViewer.CanContentScroll="False"AlternatingRowBackground="LightBlue"VerticalGridLinesBrush="{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"LoadingRowDetails="dgDetail_LoadingDetails"ColumnHeaderStyle="{StaticResource HeaderStyle}"><DataGrid.Columns><!--关联详细列表隐藏样式--><DataGridTemplateColumn Header="#" Width="Auto" MinWidth="60" CellTemplate="{StaticResource dtNum}"/><DataGridTextColumn Header="id" Binding="{Binding Path=id}" Width="Auto" Visibility="Hidden"/><DataGridTextColumn Header="工装编号" Binding="{Binding Path=gz_code}" Width="Auto" MinWidth="100"/><DataGridTextColumn Header="表芯编号" TextBlock.TextAlignment="Center" Binding="{Binding Path=chip_code}" Width="Auto" MinWidth="100"/><DataGridTemplateColumn Header="合格" Width="100" CellTemplate="{StaticResource dtJudge}"/><DataGridTextColumn Header="时间" Binding="{Binding Path=time, StringFormat='yyyy年MM月dd日 HH:mm:ss'}" Width="*"/></DataGrid.Columns><DataGrid.RowDetailsTemplate><DataTemplate><DataGridItemsSource="{Binding}"AutoGenerateColumns="False" IsReadOnly="True" GridLinesVisibility="All"SelectionUnit="FullRow"ScrollViewer.CanContentScroll="False"AlternatingRowBackground="LightBlue"Margin="20 0 0 0"VerticalGridLinesBrush="{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"PreviewMouseWheel="DataGridDetail_PreviewMouseWheel"ColumnHeaderStyle="{StaticResource HeaderStyle}"><DataGrid.Columns><DataGridTextColumn Header="#" Binding="{Binding rownum}"  Width="Auto" MinWidth="40"/><DataGridTextColumn Header="id" Binding="{Binding Path=id}" Width="Auto" Visibility="Hidden"/><DataGridTextColumn Header="角度(°)" Binding="{Binding Path=angle, StringFormat={}{0:F0}}" Width="100"/><DataGridTextColumn Header="电压(mv)" Binding="{Binding Path=voltage, StringFormat={}{0:F4}}" Width="100"/><DataGridTemplateColumn Header="合格" Width="100" CellTemplate="{StaticResource dtJudge}"/><DataGridTextColumn Header="时间" Binding="{Binding Path=time, StringFormat='yyyy年MM月dd日 HH:mm:ss'}" Width="*"/></DataGrid.Columns></DataGrid></DataTemplate></DataGrid.RowDetailsTemplate>
</DataGrid>

详细列表鼠标滚轮支持后台代码

private void DataGridDetail_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta){RoutedEvent = MouseWheelEvent,Source = sender};(sender as DataGrid).RaiseEvent(eventArg);
}

行详细信息显示后台代码

private void BtnRowDetail_ShowHideClick(object sender, RoutedEventArgs e)
{var obj = sender as DependencyObject;var tb = obj.FindChild<TextBlock>("tag");if (null == tb) return;while (obj != null && !(obj is DataGridRow)){obj = VisualTreeHelper.GetParent(obj);}DataGridRow row = obj as DataGridRow;if (null == row) return;if (tb.Text.IndexOf("﹣") > -1){row.DetailsVisibility = Visibility.Collapsed;tb.Text = "﹢";} else{row.DetailsVisibility = Visibility.Visible;tb.Text = "﹣";}
}

数据显示效果

详细信息显示

详细信息折叠

http://www.lryc.cn/news/193078.html

相关文章:

  • Compose 组件 - 分页器 HorizontalPager、VerticalPager
  • Web3 招聘 | Bitget、MyShell、imToken、Arweave 多项目招聘中
  • 通过HTTP发送大量数据的三种方法
  • 【MySQL】索引和事物
  • win11下的VS2022+QT6+VTK9.2+PCL1.13.1联合开发环境配置及踩坑记录
  • CEdit
  • vue3 自定义指令
  • 用PolarDB|PostgreSQL提升通用ai机器人在专业领域的精准度
  • idea中maven plugin提示not found
  • Hadoop3教程(七):MapReduce概述
  • 【Doris实战】Apache-doris-2.0.2部署帮助手册
  • 如何处理接口调用的频率限制
  • Ubuntu 22.04上安装Anaconda,及 conda 的基础使用
  • 算法练习13——跳跃游戏II
  • 算法|每日一题|只出现一次的数字|位运算
  • Smartforms 打印出现的问题
  • 【考研408真题】2022年408数据结构41题---判断当前顺序存储结构树是否是二叉搜索树
  • 深度学习DAY3:激活函数
  • puppeteer
  • javascript二维数组(21)执行异步HTTP(Ajax)请求的方法($.get、$.post、$getJSON、$ajax)
  • TypeScript React(下)
  • 『Linux小程序』进度条
  • 【手写数字识别】GPU训练版本
  • c#-特殊的集合
  • Android 使用 eChart 设置标线
  • 红队专题-Cobalt strike 4.x - Beacon重构
  • 一文掌握 Go 文件的写入操作
  • 小程序入门及案例展示
  • linux 安装python django pip 遇到的问题
  • 【问题解决】【爬虫】抓包工具charles与pycharm发送https请求冲突问题