Как я могу получить имена из выбранных ListViewItems? - PullRequest
4 голосов
/ 17 марта 2011

У меня есть ListView с привязкой данных к 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
            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Объект типа "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
             }
         }
     }
}


Связанный: Как привести коллекцию System.Windows.Controls.SelectedItemCollection?

0 голосов
/ 17 марта 2011
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.
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...