Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um ein Ereignis für die einzelnen Einträge in einem ListView-Objekt zu behandeln, müssen Sie jedem ListViewItem-Objekt einen Ereignishandler hinzufügen. Wenn ein ListView-Objekt an eine Datenquelle gebunden ist, erstellen Sie nicht explizit ein ListViewItem-Element, sondern behandeln das Ereignis für die einzelnen Einträge, indem Sie EventSetter einem Stil eines ListViewItem-Elements hinzufügen.
Beispiel
Im folgenden Beispiel wird ein datengebundenes ListView-Objekt erstellt. Außerdem wird ein Style erstellt, um jedem ListViewItem-Element einen Ereignishandler hinzuzufügen.
<!--XmlDataProvider is defined in a ResourceDictionary,
such as Window.Resources-->
<XmlDataProvider x:Key="InventoryData" XPath="Books">
<x:XData>
<Books >
<Book ISBN="0-7356-0562-9" Stock="in" Number="9">
<Title>XML in Action</Title>
<Summary>XML Web Technology</Summary>
</Book>
<Book ISBN="0-7356-1370-2" Stock="in" Number="8">
<Title>Programming Microsoft Windows With C#</Title>
<Summary>C# Programming using the .NET Framework</Summary>
</Book>
<Book ISBN="0-7356-1288-9" Stock="out" Number="7">
<Title>Inside C#</Title>
<Summary>C# Language Programming</Summary>
</Book>
<Book ISBN="0-7356-1377-X" Stock="in" Number="5">
<Title>Introducing Microsoft .NET</Title>
<Summary>Overview of .NET Technology</Summary>
</Book>
<Book ISBN="0-7356-1448-2" Stock="out" Number="4">
<Title>Microsoft C# Language Specifications</Title>
<Summary>The C# language definition</Summary>
</Book>
</Books>
</x:XData>
</XmlDataProvider>
...
<!--The Style is defined in a ResourceDictionary,
such as Window.Resources-->
<Style TargetType="ListViewItem">
<EventSetter Event="MouseDoubleClick" Handler="ListViewItem_MouseDoubleClick"/>
</Style>
...
<ListView ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}">
<ListView.View>
<GridView>
<GridViewColumn Width="300" Header="Title"
DisplayMemberBinding="{Binding XPath=Title}"/>
<GridViewColumn Width="150" Header="ISBN"
DisplayMemberBinding="{Binding XPath=@ISBN}"/>
</GridView>
</ListView.View>
</ListView>
Im folgenden Beispiel wird das MouseDoubleClick-Ereignis behandelt.
Private Sub ListViewItem_MouseDoubleClick(ByVal sender As Object, _
ByVal e As MouseButtonEventArgs)
Dim lvi As ListViewItem = CType(sender, ListViewItem)
Dim book As XmlElement = CType(lvi.Content, XmlElement)
If book.GetAttribute("Stock") = "out" Then
MessageBox.Show("Time to order more copies of " + book("Title").InnerText)
Else
MessageBox.Show(book("Title").InnerText + " is available.")
End If
End Sub
void ListViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
XmlElement book = ((ListViewItem) sender).Content as XmlElement;
if (book == null)
{
return;
}
if (book.GetAttribute("Stock") == "out")
{
MessageBox.Show("Time to order more copies of " + book["Title"].InnerText);
}
else
{
MessageBox.Show(book["Title"].InnerText + " is available.");
}
}
Hinweis |
|---|
Obwohl es die gängige Vorgehensweise ist, ein ListView-Objekt an eine Datenquelle zu binden, können Sie einen Stil verwenden, um jedem ListViewItem eines nicht datengebundenen ListView-Objekts einen Ereignishandler hinzuzufügen. Dies gilt unabhängig davon, ob Sie explizit ein ListViewItem erstellen.Weitere Informationen zu explizit und implizit erstellten ListViewItem-Steuerelementen finden Sie unter ItemsControl. |
Siehe auch
Aufgaben
Gewusst wie: Binden an XML-Daten mithilfe von XMLDataProvider und XPath-Abfragen
Hinweis