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

时间:2012-02-13 10:45:15

标签: windows-phone-7 listbox contextmenu

我有一个带有上下文菜单的列表框。如何在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>

感谢。

2 个答案:

答案 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一起使用。 要么 添加一些元素选择标志......