WPF Listview Zugang zu SelectedItem-und Unterpositionen
Ok, ich habe mehr Probleme mit meinem C# - WPF-ListView-Steuerelement. Hier ist es in seiner ganzen Pracht:
<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>
Ich bin die Befüllung der listView mit den folgenden:
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 });
}
Ich habe einen Teufel von einer Zeit, die das abrufen von Daten aus einer Zeile, wenn es doppelt geklickt wird.
Die DoubleClick stellt popup-message-box, die alle Daten in der Zeile, ich kann einfach nicht scheinen, um nur ein Unterpunkt oder Zelle Daten. Sagen, in einer Reihe ISBN: 1234567 Titel: Hurrr Autor: Waldo, wie kann ich nur abrufen, die ISBN oder nur den Titel?
private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
System.Windows.MessageBox.Show(listView1.SelectedItems[0].ToString());
}
Noch neu in C# und .Net und schlug meinen Kopf gegen die Wand. Ich denke, das sollte ziemlich einfach sein.
InformationsquelleAutor Dave | 2009-09-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
listView1.SelectedItems[0]
gibt einobject
. Sie müssen zuerst warf ihn zu seiner spezifischen Art, bevor Sie Zugriff auf Ihre Mitglieder. Für das casting müssen Sie wissen, den Namen der Klasse zu werfen, aber du bist hinzufügen von Instanzen eines anonyme Klasse (= hat keinen Namen) zu Ihrem ListView.Lösung: Definieren Sie eine Klasse (z.B.
Book
) mit ISBN, Titel und Autor, Eigenschaften und InstanzenBook
an das ListView-Steuerelement. Dann können Sie die notwendigen Darsteller:Vergessen Sie nicht, fügen Sie Instanzen, wenn
Book
an das ListView-Steuerelement anstelle von Instanzen eines anonymen Typs:Du bist immer noch das hinzufügen von Instanzen eines anonymen Typs auf Ihrem ListView. Antwort aktualisiert.
Es habe! Ich bekomme es jetzt, macht Sinn. Danke!
Danke dude, es war nützlich für mich 😉
Auch
Book book = (Book)listView1.SelectedItems[0];
können verwendet werdenvar book = (Book)listView1.SelectedItems[0];
InformationsquelleAutor dtb
Ich habe ein Problem mit dem code oben, sobald ich es benutze, meine listView nicht Liste jeder dieser Werte. Ich weiß nicht, ob das Ihnen helfen wird, oder wenn das korrekt ist, aber nach ein paar tests, die ich Hinzugefügt () nach "wählen Sie " neues Buch" und dann ListView zeigen konnte, alle Felder richtig für mich.
InformationsquelleAutor Robert Stepien