LongListSelector获取选定的索引

本文关键字:索引 获取 LongListSelector | 更新日期: 2023-09-27 18:14:15

是否有办法从LongListSelector控件获得特定元素的索引?我想删除用户选择的对象,但似乎没有一个简单的方法来做到这一点。LongListSelector的数据源(ObservableCollection)可以包含重复项,所以如果我在它上面调用remove,那么它只会删除它遇到的第一个实例,而不是用户选择的那个。

我可以使用ObservableCollection的RemoveAt方法,但我似乎无法从LongListSelector中获得索引,以便我可以将其作为RemoveAt方法的参数。

LongListSelector获取选定的索引

不确定这是否会对你有帮助,但如果你在应用程序中使用整体MVVM方法,你通常会为列表中的每个项目提供一个视图模型。这样,您就可以在项目视图模型上定义一个IsSelected属性,并将其数据绑定到LongListSelector控件。然后,当您需要删除项目时,您只需找到IsSelected设置为true的所有项目。

作为一个简单的例子,在我的一个项目视图模型中,我有这个属性:
    /// <summary>
    /// Is this location selected in the UI?
    /// </summary>
    public bool Selected
    {
        get { return _selected; }
        set
        {
            if ( value != _selected )
            {
                _selected = value;
                RaisePropertyChanged( "Selected" );
            }
        }
    }

然后在我的XAML项目模板中,我有一个像这样的复选框控件绑定:

<CheckBox Grid.Column="0" Grid.RowSpan="2" IsChecked="{Binding Path=Selected,Mode=TwoWay}"
          VerticalAlignment="Top" Margin="0,-10,0,0"/>