我正在努力过滤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.我希望它会起作用,因为它使用了一个过滤器,但很明显,它有同样的问题。
答案 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时,选择状态就是持久的。