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

WPF ListView 列表

列表隐藏某一行,几种方法
1、使用CollectionViewSource过滤器,这种方法在需要隐藏某一行刷新的时候不完美,model和view由混在一起了

<!--xaml中代码-->
<Window.Resources><converter:IndexConverter x:Key="idxcvt"/><!--列表过滤器--><CollectionViewSource x:Key="FilteredItems" Source="{Binding ListChipInfos}" Filter="ListItem_Filter"><CollectionViewSource.SortDescriptions><scm:SortDescription PropertyName="State" Direction="Ascending"/></CollectionViewSource.SortDescriptions></CollectionViewSource><Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}"><Setter Property="HorizontalContentAlignment" Value="Center"/><!--对应方法3--><Setter Property="Visibility" Value="{Binding IsVisible}"/></Style>
</Window.Resources><ListView Grid.Row="0" Grid.Column="0" Grid.RowSpan="6" x:Name="ltShowChip"FontSize="16" Height="280" Opacity="0.8"HorizontalAlignment="Center"VerticalAlignment="Top"ItemContainerStyle="{StaticResource ListViewItemStyle}"ItemsSource="{Binding Source={StaticResource FilteredItems}}"><ListView.View><GridView><GridViewColumn Header="序号" Width="40"DisplayMemberBinding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Converter={StaticResource idxcvt}}"/><GridViewColumn Header="芯片ID" Width="Auto" DisplayMemberBinding="{Binding Path=sensor_chip_id}" /><GridViewColumn Header="日期" Width="100" DisplayMemberBinding="{Binding Path=date}" /></GridView></ListView.View>
</ListView>//cs代码
//列表序号转换器
public class IndexConverter : IValueConverter
{public object Convert(object value, Type TargetType, object parameter, CultureInfo culture){ListViewItem item = (ListViewItem)value;ListView listView = ItemsControl.ItemsControlFromItemContainer(item) as ListView;int index = listView.ItemContainerGenerator.IndexFromContainer(item) + 1;return index.ToString();}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}
}public class ChipInfo:INotifyPropertyChanged
{public event PropertyChangedEventHandler PropertyChanged;public string sensor_chip_id { get; set; } //芯片IDpublic long date_write { get; set; } = (DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0, 0).Ticks) / 10000; //时间戳public bool IsVisible{get;set;}//private Visibility mIsVisible = Visibility.Visible; //方法3//public Visibility IsVisible//{//	get => mIsVisible;//	set//	{//		mIsVisible = value;//		PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsVisible)));//	}//}
}private void ListItem_Filter(object sender, System.Windows.Data.FilterEventArgs e)
{if (e.Item is ChipInfo item){e.Accepted = item.IsVisible;}
}Dispatcher.InvokeAsync(() => 
{ CollectionViewSource vs = (CollectionViewSource)Resources["FilteredItems"];if (vs != null){vs.View.Refresh();//刷新}
});

2、方法笨办法,直接把删除绑定列表数据

List<ChipIdInfo>ChipInfos=[]; //全部数据
ObservableCollection<ChipIdInfo> ListChipInfos=[]; //列表绑定对象
//过滤数据后重置列表绑定
ListChipInfos = new ObservableCollection<ChipIdInfo>(ChipInfos);

3、通过修改 ListViewItem 样式来实现隐藏/显示某一行,这种方法几百条数据没卡顿,效果好,不过每行都绑定一个数据,开销大,数据太多可能就不好了,几天条数据显示会卡顿,不过搜索还好,就是不知道1万条数据咋样

在搜索时只需要设置 IsVisible=Visibility.Collapsed/Visible即可

http://www.dtcms.com/a/552877.html

相关文章:

  • 国内资深易经风水专家谷晟阳
  • seo网站优化优化排名关于网站建设电话销售的开场白
  • Docker Swarm K8s云原生分布式部署2025年版
  • 量化投资从入门到入土:什么是股市
  • Windows 下 ComfyUI + Comfy CLI + PyTorch(CUDA)完整源码安装教程
  • wordpress站点管理wordpress去除仪表盘
  • 【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
  • Arbess零基础学习,使用Arbess+GitLab实现Vue.js项目构建并主机部署
  • Git 标准工作流程和 Git 使用(持续更新)
  • 阿里云 OceanBase 可观测最佳实践
  • vitest单元测试测试vue中了element项目安装与运行笔记
  • NineData社区版 V4.6.0 正式发布!SQL 窗口新增4个数据源,新增支持OceanBase等多条数据复制和对比链路
  • 仿RabbitMQ实现消息队列(一)--项目介绍
  • 建设网站的法律声明正规赚佣金的平台
  • BUG与测试用例
  • 【spring boot 使用apache poi 生成和处理word 文档】
  • 橙米网站建设做网站查询违章
  • AI用于自动化办公指南
  • 从“手动试错”到“自动化闭环”:实车OTA测试的效率革命
  • 智能电器:重构生活的科技力量
  • OpenAI拟借AI估值重构浪潮冲击1.1万亿美元IPO——基于市场情绪因子与估值量化模型的深度分析
  • redis事务与Lua脚本
  • 【技术选型】前端框架:Vue vs React - 组合式API与Hooks的哲学之争
  • 网站建设网网站建设全网营销客户资源
  • Python 数据可视化:用 Matplotlib 绘制多维度对比图表
  • 【axf文件解析与J-Link通讯实战(五)】PySide6图形界面与数据可视化集成
  • Android 权限管理:适配 Android 14 运行时权限申请(含后台定位)
  • 涡阳网站优化wordpress进入后台空白
  • 【实战案例】火语言 RPA 采集小说站已完结书名(自动翻页判断),保存到Excel 全流程(附完整脚本)
  • 基于微信小程序的背单词系统x1o5sz72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。