WPF ListView选择多个列表视图项

时间:2010-02-17 15:55:27

标签: c# wpf listview select

我正在找出一种在列表视图中选择多个项目并在某个操作上删除它们的方法。 我无法弄清楚的是,我该如何选择这些多项?我认为有一个列表,我需要将它们全部添加到其中,但是处理这种情况的最佳方法是什么,您有什么想法吗? 谢谢! -Kevin

5 个答案:

答案 0 :(得分:23)

SelectionMode设置为MultipleExtended并遍历ListView中的SelectedItems

答案 1 :(得分:9)

我建议不要使用SelectedItems的{​​{1}}属性,而是将单ListView的{​​{1}}属性绑定到相应的Selected类。在此之后,您唯一需要做的就是找到绑定ListViewItem属性为TRUE的所有ViewModel对象,将其从模型集合中删除(如果删除)并刷新UI。如果集合为ViewModel,则UI将自动刷新。 祝你好运。

答案 2 :(得分:4)

您可以执行以下操作之一...

代码隐藏中的

ListView.SelectionMode = SelectionMode.Extended

XAML中的

<ListView SelectionMode="Extended"></ListView>

你也有'多个'选择模式但是你可以选择'扩展',这允许用户只使用移位修饰符选择多个项目。

要删除所选项目,您可以使用ListView.SelectedItems Propery,如下所示

while( myListView.SelectedItems.Count > 0 )
{
    myListView.Items.Remove(list.SelectedItems[0]);
}

[或者您可以使用SelectedIndices属性]

希望这可以避免您遇到的问题:)

干杯!

答案 3 :(得分:3)

如果您不使用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>

在视图模型中,您将拥有对象: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

答案 4 :(得分:-1)

通过编写

获得WPF listview的成功
while (lvJournalDetails.SelectedItems.Count > 0)
{
    lvJournalDetails.Items.Remove(lvJournalDetails.SelectedItem);
}