Comment : gérer l'événement MouseDoubleClick pour chaque élément d'un ListView
Pour gérer un événement pour un élément dans un ListView, vous devez ajouter un gestionnaire d'événements à chaque ListViewItem. Lorsqu'un ListView est lié à une source de données, vous ne créez pas explicitement d'ListViewItem, mais vous pouvez gérer l'événement pour chaque élément en ajoutant un EventSetter à un style d'un ListViewItem.
Exemple
L'exemple suivant crée un ListView lié aux données et crée un Style afin d'ajouter un gestionnaire d'événements à chaque ListViewItem.
<!--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>
L'exemple suivant gère l'événement MouseDoubleClick.
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.");
}
}
Remarque |
---|
Bien que la procédure la plus courante consiste à lier un ListView à une source de données, vous pouvez utiliser un style pour ajouter un gestionnaire d'événements à chaque ListViewItem dans un ListView non lié aux données, indépendamment du fait que vous créiez un ListViewItem de manière explicite.Pour plus d'information sur les contrôles ListViewItem créés explicitement et implicitement, consultez ItemsControl. |
Voir aussi
Tâches
Comment : effectuer une liaison à des données XML à l'aide d'un XMLDataProvider et de requêtes XPath
Référence
Concepts
Vue d'ensemble de la liaison de données