Windows phone 7 ListBox.SelectedIndex在ContextMenu事件处理程序中
我有一个带有上下文菜单的列表框。如何在ContextMenuItem click事件处理程序中获取SelectedIndex(SelectedItem)属性的值?当前在事件中,编辑\单击并删除\单击CarsList.SelectedIndex的值始终为-1 这里是我的XAML列表框:Windows phone 7 ListBox.SelectedIndex在ContextMenu事件处理程序中,windows-phone-7,listbox,contextmenu,Windows Phone 7,Listbox,Contextmenu,我有一个带有上下文菜单的列表框。如何在ContextMenuItem click事件处理程序中获取SelectedIndex(SelectedItem)属性的值?当前在事件中,编辑\单击并删除\单击CarsList.SelectedIndex的值始终为-1 这里是我的XAML列表框: 谢谢。首先,您已将上下文菜单指定给列表框控件,而不是每个项目。因此,将块移到堆栈面板 有几种方法可以获取元素,在该元素上执行关联菜单单击: 在中单击处理程序,您拥有发送者对象(我猜它是菜单项) 将其转换为Men
谢谢。首先,您已将
上下文菜单
指定给列表框
控件,而不是每个项目。因此,将
块移到堆栈面板
有几种方法可以获取元素,在该元素上执行关联菜单单击:
在中单击处理程序,您拥有发送者对象(我猜它是菜单项
)
将其转换为MenuItem
并查看其DataContext
。它将是绑定到列表的集合项。因此,您可以通过以下方式查找索引:
int selectedIndex = YourListBoxItemCollection.IndexOf((sender as MenuItem).DataContext)
,其中,YourListBoxItemCollection
是您分配给CarsList的内容。ItemsSource
看起来您需要使用ListPicker(http://silverlight.codeplex.com/releases/view/75888)用SelectedItems。
或
添加元素选择的一些标志…例如,我将ContextMenu块移动到StackPanel并分配给ListBox.ItemsSource值“Cars”。但是我在code>int-selectedIndex=Cars.IndexOf((发送方作为UIElement.DataContext)中有一个错误//找不到System.Windows.UIElement的DataContext定义有什么问题吗?抱歉,DataContext
位于FrameworkElement
中。试试看,或者用MenuItem
代替UIElement
。它应该将workListBoxItem contextMenuListItem=CarsList.ItemContainerGenerator.ContainerFromItem((发送者作为ContextMenu.DataContext)作为ListBoxItem//找到此代码,但它引发异常NullReferenceException。我不明白如何读取ItemTemplate中文本框的值?请一步一步地调试代码<代码>变量菜单=发送者作为上下文菜单
Car Car=Menu.DataContext作为Car代码>int index=Cars.IndexOf(Car)代码>哪里有异常?感谢您的帮助和提示:)它正在工作(解决方案如下,在第二个答案下)。已解决。使用此常见问题解答:对于将来的问题:>ListBoxItem selectedListBoxItem=CarsList.ItemContainerGenerator.ContainerFromItem((发件人作为MenuItem.DataContext)作为ListBoxItem;int SelectedIndex=CarsList.ItemContainerGenerator.IndexFromContainer(selectedListBoxItem);这是一项工作,但很有趣的是,是否有针对该代码的优化或更灵活的解决方案?谢谢大家的回答。
int selectedIndex = YourListBoxItemCollection.IndexOf((sender as MenuItem).DataContext)