Winphone开发,长按listBox(hold)事件,如何获取slectIndex?
Winphone开发,长按listBox(hold)事件,如何获取slectIndex?或者说是item的序号。在网上找的方法有问题。
private void listBox1_Hold(object sender, Microsoft.Phone.Controls.GestureEventArgs e)
{
try
{
var holdItem = (sender as Grid).DataContext;
int i = 0;
foreach (var item in listBox1.Items)
{
if (item == holdItem)
break;
MessageBox.Show(item.ToString());
i++;
}
//Debug.WriteLine("hold:" + i);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
[解决办法]
<DataTemplate x:Key="DataTemplate">
<Grid Width="432">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="true">
<toolkit:MenuItem DataContext="{Binding}" Header="{Binding Localizedresources.action_delete, Source={StaticResource LocalizedStrings}}" Click="Delete"/></toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Grid>
</DataTemplate>
首先你要在的lisbox的ItemTemplate中添加上文的红色代码
DataContext="{Binding}" 这个就是你要的对象。
后台
private void Delete(object sender, RoutedEventArgs e)
{
var menuItem = (MenuItem)sender;
menuItem.DataContext;
}
在后台这么读取它。