WPF Listview Accès à SelectedItem et les points
Ok, je vais avoir plus de problèmes avec mon C# WPF contrôle ListView. Ici, il est dans toute sa splendeur:
<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 suis le remplissage de la liste avec les éléments suivants:
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 });
}
Je vais avoir un diable d'un temps de récupération des données à partir d'une ligne lorsqu'il est double-cliqué.
DoubleClick n'-affiche une boîte de message avec toutes les données dans la ligne, j'ai juste ne peut pas sembler obtenir un seul paragraphe ou de la cellule de données. Dire une ligne a ISBN: 1234567 Titre: Hurrr Auteur: Valdes, comment dois-je viens de récupérer le numéro 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 cogner ma tête contre le mur. Je me figure ce devrait être assez simple.
OriginalL'auteur Dave | 2009-09-10
Vous devez vous connecter pour publier un commentaire.
listView1.SelectedItems[0]
retourne unobject
. Vous devez d'abord jette à son type avant de pouvoir accéder à ses membres. Pour le casting, vous devez connaître le nom de la classe à jeter, mais vous êtes ajout d'instances d'un classe anonyme (= n'a pas de nom à votre Liste.Solution: Définir une classe (par exemple,
Book
) et l'ISBN, le Titre et l'Auteur des propriétés et ajouter des instances deBook
à la ListView. Ensuite, vous pouvez faire le nécessaire cast:N'oubliez pas d'ajouter des instances si
Book
à la liste à la place des instances d'un type anonyme:Vous êtes toujours à l'ajout d'instances d'un type anonyme à votre Liste. Réponse de mise à jour.
De se! Je comprends maintenant, fait sens. Merci!
Merci mec, il a été utile pour moi 😉
Aussi
Book book = (Book)listView1.SelectedItems[0];
peut être utilisé commevar book = (Book)listView1.SelectedItems[0];
OriginalL'auteur dtb
J'ai un problème avec le code ci-dessus, une fois que je l'utilise, ma listView n'a pas la liste de tout de ces valeurs. Je ne sais pas si cela va vous aider ou si c'est correct, mais après quelques tests, j'ai ajouté () après "sélectionnez nouveau Livre" et puis ListView pourrait afficher tous les champs correctement pour moi.
OriginalL'auteur Robert Stepien