ContextMenu事件处理程序中的ListBox.SelectedIndex

ibo*_*kiy 2 listbox contextmenu windows-phone-7

我有一个带有上下文菜单的列表框.如何在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>
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ku6*_*opr 9

首先,您已经分配Context MenuListBox控制,而不是每个项目.所以,移动<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