Ok, j'ai plus de problèmes avec mon contrôle C# WPF ListView. Ici, il est dans toute sa splendeur:WPF Listview Accès à SelectedItem et aux sous-éléments
<Window x:Class="ebook.SearchResults" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="ISBNListView" Height="503" Width="1004">
<Grid>
<ListView Name="listView1" Margin"22,30,33,28" MouseDoubleClick="getSelectedItem" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="ISBN" Width="150" DisplayMemberBinding="{Binding ISBN}"/>
<GridViewColumn Header="Title" Width="350" DisplayMemberBinding="{Binding Title}"/>
<GridViewColumn Header="Author" Width="350" DisplayMemberBinding="{Binding Author}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>
Je remplis ListView ce qui suit:
XDocument xdoc = XDocument.Load(GlobalVars.docPath + "\\tempSearchResults.xml");
var items = from item in xdoc.Descendants("Book")
select new
{
ISBN = item.Element("ISBN").Value,
Title = item.Element("Title").Value,
AuthTexts = item.Element("Author").Value
};
foreach (var item in items)
{
listView1.Items.Add(new { ISBN = item.ISBN, Title = item.Title, Author = item.AuthTexts });
}
J'ai un diable d'un temps de récupération des données à partir d'une ligne quand il est double cliqué. DoubleClick affiche une boîte de message avec toutes les données de la ligne, je n'arrive pas à obtenir un seul sous-élément ou des données de cellule. Dire une ligne a ISBN: 1234567 Titre: Hurrr Auteur: Waldo, comment puis-je récupérer l'ISBN ou juste le titre?
private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
System.Windows.MessageBox.Show(listView1.SelectedItems[0].ToString());
}
Encore nouveau pour C# et .Net et me cogner la tête contre le mur. Je pense que cela devrait être plutôt simple.
C'est tout à fait logique! J'ai ajouté un livre de classe comme suit: public class Livre { public string ISBN {get; ensemble; } public string Titre {obtenir; ensemble; } public string Auteur {obtenir; ensemble; } } Lorsque je double-clique sur une ligne, j'obtiens l'erreur suivante sur la ligne d'instanciation Book que vous avez fournie: Impossible de convertir un objet de type '<> F_AnonymousType1'3 [System.String, System.String, System.String ] 'taper' Book ' – Dave
Vous ajoutez toujours des instances d'un type anonyme à votre ListView. Réponse mise à jour – dtb
J'ai compris! Je comprends maintenant. Merci! – Dave