0

我的页面中有这个列表框:

<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 那么我怎么能以其他方式删除项目?我怎样才能知道我在哪一行点击了图片?

4

2 回答 2

1

首先,我不建议在按钮上使用 Tap 事件。为此目的有 Click 事件。其次,与您的问题有关:在您的事件处理程序中(可以是 Tap 或 Click,没关系)您编写如下代码:

Button btn = sender as Button;
YourViewModelDataType itemContext = btn.DataContext as YourViewModelDataType;

然后在itemContext变量中,您可以引用需要从收藏夹集合中删除的项目,或者对它做任何您想做的事情。

于 2013-02-18T11:54:30.633 回答
0

您应该将 SelectedItem 绑定为该按钮命令的参数/参数。然后,您可以将该按钮命令绑定到视图模型中的方法,其中所选项目会自动作为参数传递。

于 2013-02-18T10:47:02.193 回答