LongListSelector获取选定的索引

时间:2013-05-17 18:56:37

标签: c# silverlight xaml windows-phone longlistselector

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

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

1 个答案:

答案 0 :(得分: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"/>

希望这有帮助。