2

我正在尝试编写一些代码来执行“全选”功能。为此,在后面的代码中,我尝试手动将所有列表对象添加到 LongListMultiSelector 的 SelectedItems 中。

然而问题是,当我这样做时,列表会增加两个项目,它们的信息相同。我曾尝试使用 SelectedItems.Add(...), SelectedItems.Insert(...) 无济于事。

我还尝试使用 SelectedItems.Remove(...), SelectedItems.RemoveAt(...) 立即从列表中删除其中一个项目,这将实际删除两个条目,无论我实际删除哪个条目。

最后,我尝试将其中一个条目更改为 NULL。这实际上删除了列表中的一项,但随后将剩余的一项更改为空对象本身。我是否以正确的方式执行此 SelectAll 功能?对于我想要实现的目标,是否有更好的选择?是否可以继续我正在做的事情并解决这个重复问题?

4

2 回答 2

2

这对我有用,无需添加重复项:

private void OnSelectAllClick(object sender, EventArgs e)
    {
        LongListMultiSelectorName.SelectedItems.Clear();
        foreach (var item in LongListMultiSelectorName.ItemsSource)
        {
            LongListMultiSelectorName.SelectedItems.Add(item);
        }
    }
于 2014-06-06T18:16:32.633 回答
1

解决方案是“伪造”此处指出的用户选择:http: //www.jonathanantoine.com/2013/04/18/wp-toolkit-adding-a-item-in-the-selecteditems-collection-of -a-longlistmultiselector-actually-adds-2/

foreach (var item in LongListMultiSelector.ItemsSource)
{
    var container = LongListMultiSelector.ContainerFromItem(item) 
                          as LongListMultiSelectorItem;
    if (container != null) container.IsSelected = true;
}
于 2013-04-18T08:59:52.940 回答