Search code examples
c#wpflistlistviewlistviewitem

How to select the listviewitem, where a button was clicked


i want to select a listviewitem, where a button was clicked.

Here is my Listview with 2 llistviewitems

I click the X-Button and want to delete these item out of the list. How i get that item? I have these code:

 private void Delete_Click(object sender, RoutedEventArgs e)
    {
        var item = sender as ListViewItem;

            var obj = item.Content as object;

            List.Remove(obj);
     }

Edit: The Binding of the ListView

       <ListView x:Name="listview">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <WrapPanel>
                        <TextBlock Text="Bild     "/>
                        <TextBlock Text="{Binding Title}"/>
                        <Button x:Name="Change" Content="Change" Margin="250,0,0,0" Click="Change_Click"/>
                        <Button x:Name="Delete" Content="X" Margin="10,0,0,0" Click="Delete_Click"/>
                    </WrapPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="Height" Value="50"/>
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="lvSeriesItem_PreviewMouseLeftButtonDown"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

Solution

  • please use this instead.The control that raised the event is not the listbox but the button.The button as a datacontext of your collection model object. so this should workd

    private void Delete_Click(object sender, RoutedEventArgs e)
        {
            var button= sender as Button;    
             var obj =(YourModelHere)button.DataContext;
    
                List.Remove(obj);
         }