我的页面中有这个列表框:
<ListBox x:Name="lstData" Tap="lstData_Tap" ItemsSource="{Binding
Source={StaticResource favoriteAddressCollection},
Path=DataCollection}" Margin="22">
<ListBox.ItemTemplate >
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="/Images/Search/favorite_red.png" Margin="12" />
<TextBlock Text="{Binding Path=Address}" VerticalAlignment="Center" Width="300" />
<Button BorderThickness="0" Width="60" Height="60" HorizontalAlignment="Right"
Tap="imgDelete_Tap">
<Button.Background>
<ImageBrush ImageSource="/Images/Search/unfavorite.png"></ImageBrush>
</Button.Background>
</Button>
<!--<Image x:Name="imgDelete" Source="/Images/Search/unfavorite.png" Width="40" Margin="12" HorizontalAlignment="Right"
Tap="imgDelete_Tap" />-->
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在我想在点击该图片后删除项目。我没有设置SelectedItem或SelectedIndex所以我怎么能以其他方式删除项目?如何找到我点击图像的哪一行?
答案 0 :(得分:1)
首先,我不建议在按钮上使用Tap事件。为此目的,有Click事件。 第二,与你的问题有关:在你的事件处理程序中(可能是Tap或Click,无所谓)你编写这样的代码:
Button btn = sender as Button;
YourViewModelDataType itemContext = btn.DataContext as YourViewModelDataType;
然后在itemContext
变量中,您可以引用需要从“收藏夹”集合中删除的项目,或者使用它来执行任何操作。
答案 1 :(得分:0)
您应该将SelectedItem绑定为该buttons命令的参数/参数。然后,您可以将该按钮命令绑定到viewmodel中的方法,其中所选项目将自动作为参数传递。