如何从Databound Windows Phone应用程序中删除项目?

时间:2011-06-08 01:39:41

标签: data-binding windows-phone-7

从库存数据绑定应用程序开始,我替换MainPage上的xaml

<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
       <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>

用这个:

<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Name="ItemName" Margin="10,10,0,0" Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Grid.Column="0" />
<Button Grid.Column="1" Click="Button_Click" BorderThickness="0" Height="40" HorizontalAlignment="Center">
</StackPanel>

在Button_Click()中,我想从Items中删除该项。我知道语法会像App.ViewModel.Items.Remove(某事) 但我错过了什么。如何根据显示的LineOne值确保删除正确的项目?

感谢您的光临。

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。最好的方法是使用ICommand。但是您还需要添加一个CommandButton类来保存引用和参数。

如果您想要快速解决方法,那么按钮单击事件中的发送方对象应该是您单击的按钮,其DataContext属性应该是列表项。如果你只是在学习这些工具,那么这是一个令人讨厌的黑客,但是比沿着ICommand路径工作要少得多。

private void Button_Click(object sender, RoutedEventArgs e) {
  App.ViewModel.Items.Remove((ItemViewModel)((Button)sender).DataContext);
}