Tag: listview

按列对ListView排序

目前我在listview上使用自定义排序器,每次单击FIRST列时我都可以对listview进行排序,但不会按其他列排序。 SortStyle:变量以确定它是Ascending Sort还是Descending。 if (e.Column == 0) { if (SortStyle == 0) { List.ListViewItemSorter = customSortDsc; SortStyle = 1; } else { List.ListViewItemSorter = customSortAsc; SortStyle = 0; } } 在为第一列排序时,这可以正常工作,但如果您要在任何其他列上执行此操作,则只需按第一列排序。 有没有办法按列点击排序?

WPF的ICollectionView.filter包含大量数据

我正在开发一个wpf应用程序,其中包含一个包含大量数据(10 000到100 000)行的列表视图。 用户可以将各种filter应用于此列表视图,使filter逻辑非常先进(并且速度慢)。 目前,我的代码的相关部分如下所示: ICollectionView view = CollectionViewSource.GetDefaultView(hugeList.ItemsSource); view.Filter = new Predicate(FilterCallback); private bool FilterCallback(object item) { //Filter logic } 但是这会在UI线程中运行并在过滤时阻止整个应用程序,这会给用户带来非常糟糕的体验。 所以我的问题是:有没有人知道在wpf中过滤listview的“更好”方法,还是应该过滤底层的ObservableCollection ?

如何在ListView中监听滚动?

ListView似乎不支持Scroll事件。 每当滚动列表时我都需要调用一个函数; 我该怎么办呢?

不要在目录列表视图中显示隐藏文件

我有代码生成我的计算机的listview目录。 当我打开C目录时,它显示$ RECYCLE.Bin。 反正有没有它显示这些文件? foreach (string dir in folders) { dirData[0] = dir.ToString(); dirData[1] = dir.Length.ToString(); dirData[2] = File.GetLastAccessTime(dir).ToString(); ListViewItem lv = new ListViewItem(dirData, imageList1.Images.Count – 1); lv.Tag = dir; imageList1.Images.Add(BlackFox.Win32.Icons.IconFromExtensionShell(“.*”, BlackFox.Win32.Icons.SystemIconSize.Small).ToBitmap()); listView1.SmallImageList = imageList1; listView1.Items.Add(lv); }

ListView中的UserControl DependencyProperty绑定

当我尝试在ListView中使用自定义UserControl时,它会失败并且只显示空块(但下面的TextBlock可以正常工作)。 虽然ListView外部的customControl工作得很好。 有什么问题? MainWindow.xaml MainWindow.cs public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); InitializeMyComponent(); } public System.Collections.ObjectModel.ObservableCollection CustomCollection { get; set; } private void InitializeMyComponent() { this.CustomCollection = new System.Collections.ObjectModel.ObservableCollection(); this.CustomCollection.Add(new CustomClass() { Number = 1, Text = “a” }); this.CustomCollection.Add(new CustomClass() { Number = 2, Text = “b” }); this.CustomCollection.Add(new CustomClass() […]

为什么在这个ListView上没有定义’SelectedIndex’?

我创建了一个名为listUsers的ListView ,但由于某种原因,没有定义SelectedIndex 。 我已将MultiSelect设置为false。 对我来说似乎也很可疑,“假”是粗体。 这意味着它不是默认的。 这不是我认为我以前经历过的。 所以我发现这很奇怪,我不知道如何解决它。 到目前为止我已经尝试过(这不起作用): 重启VS. 从其他表单复制ListView ,并将其粘贴到此表单上 从Designer的代码中删除了this.listUsers.MultiSelect定义 没有人工作。 到底是怎么回事? 额外细节: Windows 7 32位 VS2010 框架4

将WrapPanel虚拟化为ListView的ItemsTemplate

我的窗口中有一个ListView 。 ListView的默认ItemsPanel已替换为WrapPanel 。 我也有一个DataTemplate用于它的ListViewItem 。 在运行时,主窗口将不会响应一段时间,因为ListView具有超过700(并且不断增加) ListViewItem (来自数据绑定)。 有没有办法让主窗口保持响应? 可选:当ListView没有准备好时,我想要一个文本(或可能的ProgressBar )显示在ListView并说出“Please Wait …”或者“Loading Items …”之类的内容。 XAML: 编辑: 我试过这个: List MyList = new List(); ThreadPool.QueueUserWorkItem(_ => { ( Create MyList here…) Dispatcher.BeginInvoke(new Action(() => { MyListView.ItemsSource = MyList; })); }); 在ListView准备好之前,主窗口仍然没有响应。

如何获取ListView中的可见项的起始索引和数量?

我在LargeIcons视图中有一个在虚拟模式下工作的listview。 检索很昂贵,所以我想询问所有可见项目的数据。 如何获取可见项目的起始索引和总数? 更新:我知道CacheVirtualItems事件。 我们使用的第三方数据库需要大约3秒来检索单个记录,但是需要大约4秒来检索一千条记录,所以我必须在大块中执行它们。 我需要确保可见记录在我们检索的记录中,因此我需要知道可见项的起始索引和总数。 如果这不可行,我将不得不找到一个解决方法(这可能涉及使用带有大量图像单元的DataGridView来模仿LargeIcons视图)但我想尽可能正确地做到这一点。

如何获得ListView项的高度?

我有ListView,我需要确定项目高度。

如何使ListView中的项目具有不同的颜色?

我有一个ListViewItems的ListView。 当某个事件触发时,我想强调其中的一些,所以我正在寻找一种方法将listview的颜色改为黑色以外的东西(红色会令人愉快)。 是否可以动态更改默认winforms ListView中项目的颜色? 如果不是,是否有一些简单的方法可以动态地强调项目?