WPF过滤ListView删除所选项目

时间:2017-01-23 09:54:41

标签: c# wpf xaml

我正在努力过滤listView。我尝试了两种方法来过滤而没有删除选定的项目。 我的问题:每当选定的项目由于过滤器而消失时,它在返回时就不再被选中。 我的方法:

自编代码:

onFingerMoved(float x, float y) {
   const float xfactor = 0.01; // Modify to control the speed of rotation
   const float yfactor = -0.1; // Modify to control the speed of movement

   float dx = previousX - x;
   float dy = previousy - y;
   onTurnRight(dx);
   onMove(.0, .0, dy); // Assuming the Z coordinate is forward

   previousX = x; 
   previousY = y;
}

这样做是搜索所有项目并仅显示与过滤器匹配的项目,但此方法可以最佳地删除项目并重新添加它们。 我尝试为选定的项添加一个值,保存onSelectionChanged并在更改过滤器时使用,但它不起作用。

第二种方法来自this tutorial.我希望它会起作用,因为它使用了一个过滤器,但很明显,它有同样的问题。

1 个答案:

答案 0 :(得分:0)

您可以尝试根据Visibility的某些属性设置ListViewItem的Oseba。然后,而不是

osebe_listView.Items.Clear();
foreach (Oseba o in seznamOseb)
{
    if (someConditions)
    {
       osebe_listView.Items.Add(o);
    }
}

你可以这样写:

foreach (Oseba o in seznamOseb)
{
    if (someConditions) // when true, we want to hide the object
    {
       o.IsVisible = false;
    }
}

并在.xaml文件中使用DataTemplate,当Visibility设置为false时,该项目会将项Collapsed设置为IsVisible

另一种方法是将IsSelected - 状态存储在对象Oseba中,这样当您将对象移除并重新添加到listView时,选择状态就是持久的。