如何避免ListBox或ListView中已选中复选框的闪烁?

时间:2011-05-23 06:38:31

标签: c# wpf listview listbox flicker

  

可能重复:
  WPF: How can I avoid the flickering of the checked checkboxes in a ListBox or a ListView ?

有没有人能够解决这个问题呢?

WPF: How can I avoid the flickering of the checked checkboxes in a ListBox or a ListView?

我一直在寻找这个超过一个星期的时间&仍然没有解决方案。

在添加甚至刷新项目时它会闪烁,这非常令人讨厌。

.Net 4.0版。

2 个答案:

答案 0 :(得分:0)

抱歉,我不太了解XAML,但你能尝试这样的事吗?

注意:我认为你不能在XAML中使用BackgroundWorker对象,但是你可以在另一个类中使用它并找到一种方法将数据传递给它。

这里的主要想法是将你的工作转移到另一个线程,并在那里填充。

...虽然,我必须说:如果你真的在一行中添加你的所有项目(如下面的修改示例所示),我怀疑是否会有任何由此引起的闪烁。你的闪烁可能来自其他地方。是否有任何在数据源发生变化时触发的事件处理程序?

void Button_Click(object sender, RoutedEventArgs e) {
  using (BackgroundWorker worker = new BackgroundWorker()) {
    var items = new int[10000];
    worker.DoWork += delegate {
      for (int i = 0; i < items.Length; i++)
        items[i] = i + 1;
    };
    worker.RunWorkerCompleted += delegate {
      listBox.ItemsSource = items;
    };
    worker.RunWorkerAsync();
  }
}

答案 1 :(得分:-1)

您是否尝试过double buffering