0

有没有办法从 LongListSelector 控件中获取特定元素的索引?我想删除用户选择的对象,但似乎没有一种直接的方法可以做到这一点。LongListSelector 的数据源(ObservableCollection)可以包含重复项,因此如果我对其调用 remove 则它只会删除它遇到的第一个实例,而不是用户选择的那个。

我可以使用 ObservableCollection 的 RemoveAt 方法,但我似乎无法从 LongListSelector 中获取索引,因此我可以将它作为 RemoveAt 方法的参数传递。

4

1 回答 1

2

不确定这是否对您有帮助,但如果您在应用程序中使用整体 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"/>

希望这可以帮助。

于 2013-05-18T13:21:05.733 回答