【问题标题】:How can i get the names from the selected ListViewItems?如何从选定的 ListView 项目中获取名称?
【发布时间】:2011-03-17 13:55:58
【问题描述】:

我有一个 ListView,其数据绑定到 TreeView,TreeView 数据绑定到 XmlDataProvider。在 ListView 中,您可以一次选择多个项目。我的问题是我需要知道选择了哪些项目。如何从 ListViewItems 中获取名称?

XAML:

<ListView x:Name="listViewCards" DataContext="{Binding ElementName=treeViewCategory, Path=SelectedItem}" ItemsSource="{Binding XPath=./card/title, UpdateSourceTrigger=PropertyChanged}" KeyDown="listViewCards_KeyDown" />

C#:

private void listViewCards_KeyDown(object sender, KeyEventArgs e)
{
    IList selectedListViewItems = listViewCards.SelectedItems;
    if (selectedListViewItems.Count > 1)
    {
        //delete all selected items from xml:
        foreach (XmlNode node in xmlNode.ChildNodes)
        {
            if (node.InnerText.Equals( ??? ))
            {
                //mark for deleting
            }
        }
    }
}

【问题讨论】:

    标签: c# wpf xml data-binding listview


    【解决方案1】:

    类型的对象 “System.Windows.Controls.SelectedItemCollection” 不能转换成 "System.Windows.Controls.ListViewItem"

    试试这个:

    private void listViewCards_KeyDown(object sender, KeyEventArgs e)
    {
         IList selectedListViewItems = listViewCards.SelectedItems;
         if (selectedListViewItems.Count > 1)
         {
             //delete all selected items from xml:
             var collection = selectedListViewItems.Cast<XmlNode>();  //assuming your underlying data is XmlNode
             foreach(XmlNode node in collection)
             {
                 //do whatever you want to do with node
                 if (node.InnerText.Equals( ??? ))
                 {
                     //mark for deleting
                 }
             }
         }
    }
    


    相关:How to cast a System.Windows.Controls.SelectedItemCollection?

    【讨论】:

    • 太棒了,我很接近,一小时前我试过这个:foreach(selectedListViewItems.Cast中的对象节点())
    【解决方案2】:
    listViewCards.SelectedItems;
    

    将返回类型(最有可能的 ListViewItem)。如果它是 XmlNode 类型,您将需要转换该类型。

    private void listViewCards_KeyDown(object sender, KeyEventArgs e)
    {
        IList selectedListViewItems = listViewCards.SelectedItems;
        if (selectedListViewItems.Count > 1)
        {
            foreach(var node in ((ListViewItem)selectedListViewItems).Tag as XMLNode)
            {
                // Find your node in whatever type contains your xml
                // Do Some deleting or what have you.
            }
        }
    }
    

    【讨论】:

    • “System.Windows.Controls.SelectedItemCollection”类型的对象无法转换为“System.Windows.Controls.ListViewItem”
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    相关资源
    最近更新 更多