使用项目内的按钮删除 ListboxItem 而不选择项目
Delete ListboxItem with a button inside the item without selecting item
我有一个 ListBox
和一个 ItemTemplate
,所以每个项目都会在 TextBlock
和 Button
中显示它的 Name
来删除这个项目.
当我select项目然后单击"delete"按钮时,我可以删除项目。但是我不想select该项,只有点击删除按钮,删除当前包含删除按钮的项。
我在上面添加了一些代码。我该怎么做?
XAML 代码
<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# 代码
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);
}
}
试试这个:
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
list.Remove((Liste)btn.DataContext);
}
我有一个 ListBox
和一个 ItemTemplate
,所以每个项目都会在 TextBlock
和 Button
中显示它的 Name
来删除这个项目.
当我select项目然后单击"delete"按钮时,我可以删除项目。但是我不想select该项,只有点击删除按钮,删除当前包含删除按钮的项。
我在上面添加了一些代码。我该怎么做?
XAML 代码
<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# 代码
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);
}
}
试试这个:
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
list.Remove((Liste)btn.DataContext);
}