Arc*_*rus 23
将SelectionMode设置为Multiple
或者Extended
遍历SelectedItems
您的ListView
.
我建议不要使用SelectedItems
属性ListView
,而是将Selected
单个属性绑定ListViewItem
到相应的ViewModel
类.在此之后,您唯一需要做的就是找到ViewModel
绑定Selected
属性的所有对象为TRUE,从模型集合中删除它们(如果删除)并刷新UI.如果是集合ObservableCollection
,UI将自动刷新.祝好运.
如果您不使用 MVVM,Arcturus 的回答很好。但是如果你这样做并且你的 ItemsSource 被绑定到你的 ViewModel 中的一些 ObservableCollection 对象,我会推荐 Tigran 回答,Noman Khan 澄清。
这是它的样子:
<ListView ItemsSource="{Binding SomeListViewList}">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding SomeItemSelected, Mode=TwoWay}" />
</Style>
</ListView.Resources>
...
</ListView>
Run Code Online (Sandbox Code Playgroud)
在视图模型中,您将拥有对象: public ObservableCollection<SomeItem> SomeListViewList{ get; set; }
SomeItem 类将包含 Selected 属性:
public class SomeItem
{
public string SomeItemName { get; set; }
public string SomeItemNum { get; set; }
public bool SomeItemSelected { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以迭代/运行列表并获取选择的列表:
foreach (var item in SomeListViewList)
if (item.SomeItemSelected)
// do something
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作之一...
ListView.SelectionMode = SelectionMode.Extended
在代码隐藏或
<ListView SelectionMode="Extended"></ListView>
在 XAML 中
您也有 'multiple' selectionMode 但您宁愿选择 'extended',它允许用户仅使用 shift 修饰符来选择多个项目。
要删除选定的项目,您可以使用 ListView.SelectedItems 属性,如下所示
while( myListView.SelectedItems.Count > 0 )
{
myListView.Items.Remove(list.SelectedItems[0]);
}
Run Code Online (Sandbox Code Playgroud)
[或者您可以使用 SelectedIndices 属性]
希望这将避免您遇到的问题:)
干杯!