WPF ListView点击删除某一行并获取绑定数据

最近在开发WPF程序时遇到一个问题,在gridview中希望实现在每一行最后添加一个删除的按钮,但是发现点击每行的button时只会触发button的点击事件,并没有选中这一行,此时调用list.SelectedItem时无法得到对应的绑定数据。

UI.xaml

<ListView x:Name="list" Height="494" Width="1121" FontSize="16"  >
<ListView.View>
 <GridView x:Name="grideView" >
<GridViewColumn Header="产 品 名 称"  Width="Auto" DisplayMemberBinding="{Binding Path=productName}"/>
<GridViewColumn Header="产 品 类 型"  Width="Auto" DisplayMemberBinding="{Binding Path=productType}"/>
<GridViewColumn  Header="产 品 大 类"  Width="Auto"  DisplayMemberBinding="{Binding Path=productCategory}"  />
<GridViewColumn Header="产 品 规 格"  Width="Auto" DisplayMemberBinding="{Binding Path=productSpec}"/>
<GridViewColumn Header="产 品 数 量"  Width="Auto" DisplayMemberBinding="{Binding Path=number}"/>
<GridViewColumn Header="价 格"  Width="Auto" DisplayMemberBinding="{Binding Path=productMoney}"/>
<GridViewColumn Header="操 作"  Width="Auto" >                                <GridViewColumn.CellTemplate>
        <DataTemplate>
         <Button x:Name="BtnDelete" Background="{x:Null}" BorderBrush="{x:Null}" Click="BtnDelete_Click" >
         <Image Source="/images/error.png" />
         Button>
        DataTemplate>                              GridViewColumn.CellTemplate>
ListView.View>
ListView>

UI.cs

/**
* 删除按钮监听事件
* */
private void BtnDelete_Click(object sender, RoutedEventArgs e)
{ 
        //设置girid的选中元素为Button所在行的元素
        list.SelectedItem = ((Button)sender).DataContext;
        //在数据集合中删除此元素                       
        mItemsSource.RemoveAt(list.SelectedIndex);        
        list.Items.Refresh();//刷新listview
}

效果图
WPF ListView点击删除某一行并获取绑定数据_第1张图片

你可能感兴趣的:(c#)