【问题标题】:how to get index of particular item in listview wpf c#如何在listview wpf c#中获取特定项目的索引
【发布时间】:2014-11-07 07:23:06
【问题描述】:

我想要列表视图中特定项目的索引 例如 ListViewItem 索引

         Apple            0
         Ball             1
         Cat              2
         Dog              3

如果我将“Cat”作为项目传递,它应该返回 Cat 的索引为“3”

【问题讨论】:

  • 搜索这样的索引应该对底层数据项有一些了解。这会更容易,虽然理论上我们可以在对象项上使用ToString来获取字符串表示,但这并不安全,因为可以使用ItemTemplate来选择实际显示的字符串,...

标签: c# wpf indexing


【解决方案1】:

最终解决方案在这里: int index = MyListView.Items.IndexOf("Cat");

【讨论】:

  • 如果这是您的解决方案,那么您的问题是错误的。您不使用 ListViewItems。使用 ListViewItems 您的解决方案无法正常工作。证明:string test = (new ListViewItem() { Content = "Apple" }).ToString();。不过好在你找到了解决方案!
【解决方案2】:

ListView 项目包含在其ItemSource 中,这是一个IEnumerable

您可以通过以下方式获得某物的索引:(假设您上面的列表是一个列表)

(myListView.ItemSource as List<String>).IndexOf("Cat");

但是,我强烈建议您在构建 WPF 应用程序时研究 MVVM 的工作原理,使用 Google 可以找到大量信息和教程。

【讨论】:

    【解决方案3】:

    我认为 ListView 控件的 SelectedInex 是您正在寻找的。看看:

    http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.selectedindex(v=vs.110).aspx

    我的示例代码:

        // Assuming that this is your control
        ListView yourControl = new ListView();
    
        yourControl.Items.Add(new ListViewItem() { Content = "Apple" });
        yourControl.Items.Add(new ListViewItem() { Content = "Ball" });
        yourControl.Items.Add(new ListViewItem() { Content = "Cat" });
        yourControl.Items.Add(new ListViewItem() { Content = "Dog" });
    
        // get your index
        var newList = yourControl.Items.OfType<ListViewItem>().Select(Item => Item.Content.ToString()).ToList();
        int catIndex = newList.IndexOf("Cat"); // <-- your index
    

    【讨论】:

    • 不是选定的索引,我想要列表视图中特定项目“猫”的索引
    • 好吧,我举个例子。
    • @shubh 我添加了一个解决方案。但这取决于您如何填写数据。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多