我有一个带有上下文菜单的列表框。如何在ContextMenuItem单击事件处理程序中获取SelectedIndex(SelectedItem)属性的值?目前在事件Edit_Click和Delete_CLick中,CarsList.SelectedIndex的值始终为-1。
这是我在XAML中的ListBox:
<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>
感谢。
答案 0 :(得分:9)
首先,您已将Context Menu
分配给ListBox
控件,而非每个项目。因此,请将<toolkit:ContextMenuService.ContextMenu>
阻止移至StackPanel
。
有几种获取元素的方法,在其上执行了上下文菜单点击:
在Click
处理程序中,您有sender
个对象(我猜是MenuItem
)
将其投放到MenuItem
并查看DataContext
。它将是您绑定到列表的集合项。所以,您可以通过以下方式找到索引:
int selectedIndex = YourListBoxItemCollection.IndexOf((sender as MenuItem).DataContext)
,其中YourListBoxItemCollection
是您分配给CarsList.ItemsSource
答案 1 :(得分:0)
看起来您需要将ListPicker(http://silverlight.codeplex.com/releases/view/75888)与SelectedItems一起使用。 要么 添加一些元素选择标志......