Share via


Comment : gérer l'événement MouseDoubleClick pour chaque élément d'un ListView

Mise à jour : novembre 2007

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'informations sur les contrôles ListViewItem créés explicitement et implicitement, consultez la section « Classes de conteneur d'élément » dans Vue d'ensemble du modèle de contenu des contrôles.

Voir aussi

Tâches

Comment : effectuer une liaison à des données XML à l'aide d'un XMLDataProvider et de requêtes XPath

Concepts

Vue d'ensemble de la liaison de données

Application d'un style et création de modèles

Vue d'ensemble de ListView

Référence

XmlElement