Barsblue
Barsblue

Reputation: 109

Delete ListboxItem with a button inside the item without selecting item

I have a ListBox with an ItemTemplate so each item shows up with its Name in a TextBlock and a Button to delete this item.

I can delete the item when I select the item and then click the "delete" button. But I don't want to select the item, only click the delete button and delete the current item that contains the delete button.

I added some pieces of my code above. How can I do that?

XAML CODE

<ListBox Grid.Row="1" x:Name="listBoxProduct"  SelectionMode="Single"   Margin="0" Background="Transparent" ScrollViewer.VerticalScrollBarVisibility="Auto"  ScrollViewer.HorizontalScrollBarVisibility="Hidden" Height="200">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border BorderThickness="1" Margin="0" Height="45" CornerRadius="4" Width="875"  Background="#2E323B" BorderBrush="Black">
                <DockPanel>
                    <TextBlock Text="{Binding Customer}"  Foreground="White" TextWrapping="Wrap"   FontSize="16"  HorizontalAlignment="Left" Margin="70,0,0,0" Width="230" VerticalAlignment="Stretch"/>
                    <TextBlock Text="{Binding Piece}"    Foreground="White"  TextWrapping="Wrap"  FontSize="16"  HorizontalAlignment="Left" Margin="4,0,0,0" Width="200" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Material}"  Foreground="White"  TextWrapping="Wrap"  FontSize="16"  HorizontalAlignment="Left" Margin="10,0,0,0" Width="100" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Quantity}"  Foreground="White"    FontSize="16"  HorizontalAlignment="Left" Margin="10,0,0,0" Width="50" VerticalAlignment="Center"/>
                    <TextBlock Text="{Binding Weight}"  Foreground="White" FontSize="16"  HorizontalAlignment="Left" Margin="40,0,0,0" Width="50" VerticalAlignment="Center"/>
                    <Button Content="Delete" Name="btnDelete" Foreground="Black" Background="#CCCCCC" HorizontalAlignment="Stretch" Margin="20,0,0,0" Height="35" Width="76" VerticalAlignment="Center" Click="btnDelete_Click"/>
                </DockPanel>
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

C# CODE

public partial class CreateProduct : Window
{
    private ObservableCollection<Liste> list = new ObservableCollection<Liste>();

    private void btnDelete_Click(object sender, RoutedEventArgs e)
    {
        list.Remove((Liste)listBoxProduct.SelectedItem);

    }
}

Upvotes: 2

Views: 1815

Answers (1)

mm8
mm8

Reputation: 169360

Try this:

private void btnDelete_Click(object sender, RoutedEventArgs e)
{
    Button btn = sender as Button;
    list.Remove((Liste)btn.DataContext);
}

Upvotes: 3

Related Questions