ibo*_*kiy 2 listbox contextmenu windows-phone-7
我有一个带有上下文菜单的列表框.如何在ContextMenuItem单击事件处理程序中获取SelectedIndex(SelectedItem)属性的值?目前在事件Edit_Click和Delete_CLick中,CarsList.SelectedIndex的值始终为-1.
这是我在XAML中的ListBox:
Run Code Online (Sandbox Code Playgroud)<ListBox Name="CarsList" Style="{StaticResource ListBoxStyle}" Margin="26,0,26,0" Height="380" > <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu Name="ContextMenu" > <toolkit:MenuItem Name="Edit" Header="Edit" Click="Edit_Click"/> <toolkit:MenuItem Name="Delete" Header="Delete" Click="Delete_Click"/> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding CarName}" TextTrimming="WordEllipsis" Foreground="Black" FontSize="24" Width="428"/> <TextBlock Text="{Binding VIN}" TextWrapping="Wrap" Foreground="Gray" FontSize="20" Width="428"/> <TextBlock Text="{Binding Date}" TextWrapping="Wrap" Foreground="Gray" FontSize="20" Width="428"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
谢谢.
首先,您已经分配Context Menu到ListBox控制,而不是每个项目.所以,移动<toolkit:ContextMenuService.ContextMenu>块StackPanel代替.
有几种获取元素的方法,在其上执行上下文菜单点击:
在Click处理程序中你有sender对象(MenuItem我猜)
把它投入MenuItem并观察DataContext它.它将是您绑定到列表的集合项.所以,你可以找到索引:
int selectedIndex = YourListBoxItemCollection.IndexOf((sender as MenuItem).DataContext)
Run Code Online (Sandbox Code Playgroud)
,YourListBoxItemCollection你分配到哪里CarsList.ItemsSource