我正在尝试找出一种方法来选择列表视图中的多个项目,并在某个操作上将它们删除。 我无法想象如何选择这些多个项目。 我想有一个列表需要将它们全部添加进去,但是应该怎样最好地解决这种情况呢? 你有任何想法吗? 谢谢! -Kevin
我正在思考一种在列表视图中选择多个项并在特定操作上删除它们的方法。 我无法确定如何选择这些多个项。 我认为需要一个列表将它们全部添加到其中,但是应该如何最好地解决这种情况呢? 你有什么想法吗? 谢谢! -凯文我建议不要使用ListView
的SelectedItems
属性,而是将单个ListViewItem
的Selected
属性绑定到相应的ViewModel
类。之后,你只需要找到所有已将Selected
属性绑定为TRUE的ViewModel
对象,从模型集合中移除它们(如果你确实要移除),并刷新UI。如果集合是ObservableCollection
,则UI将自动刷新。
祝好运。
如果您不使用MVVM,则Arcturus的回答很好。但是,如果您使用MVVM并且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>
在视图模型中,您将拥有以下对象: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; }
}
然后您可以迭代/运行列表并获取已选择的选项:
foreach (var item in SomeListViewList)
if (item.SomeItemSelected)
// do something
ListView.SelectionMode = SelectionMode.Extended
或者在 XAML 中使用 <ListView SelectionMode="Extended"></ListView>
。您还可以选择“多重”选择模式,但更好的选择是“扩展”模式,它允许用户仅使用 Shift 修改键选择多个项目。while( myListView.SelectedItems.Count > 0 )
{
myListView.Items.Remove(list.SelectedItems[0]);
}
[或者您可以使用SelectedIndices属性]
希望这将避免您遇到的问题 :)
干杯!
通过编写代码,也可以在WPF列表视图中获得成功
while (lvJournalDetails.SelectedItems.Count > 0)
{
lvJournalDetails.Items.Remove(lvJournalDetails.SelectedItem);
}
SelectionMode.Multiple
不能使用 Shift+Click 选择连续的项目或者 Ctrl+A 选择全部的项目。这似乎是一个错误/疏忽。 - Livven