有没有办法从LongListSelector控件获取特定元素的索引?我想删除用户选择的对象,但似乎没有一种简单的方法。 LongListSelector的数据源(ObservableCollection)可以包含重复项,因此如果我在其上调用remove,那么它只会删除它遇到的第一个实例而不是用户选择的实例。
我可以使用ObservableCollection的RemoveAt方法,但我似乎无法从LongListSelector获取索引,以便我可以将它作为RemoveAt方法的参数传递。
答案 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"/>
希望这有帮助。