上下文菜单选择项目wp7

时间:2011-07-28 14:24:50

标签: c# silverlight xaml windows-phone-7 contextmenu

我有一个列表框。每个项目都有上下文菜单。如果我只是按住项目并使用它,它没有被选中,我得到错误。如果我是第一个选择项目而不是工作,一切都好。如何我可以选择项目保持手势?

              <DataTemplate>
                <Grid Margin="0,5">
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                  </Grid.ColumnDefinitions>
                  <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu IsEnabled="{Binding uid, Converter={StaticResource CanDelete}}"  IsZoomEnabled="True" x:Name="databoundMenu">
                      <toolkit:MenuItem Header="Удалить"  Click="deleteComment"/>
                    </toolkit:ContextMenu>
                  </toolkit:ContextMenuService.ContextMenu>
.....
                </Grid>
              </DataTemplate>

C#

var it = this.comm_box.SelectedItem as Comments;

2 个答案:

答案 0 :(得分:1)

ContextMenuService由于显而易见的原因,没有调用SelectionChanged事件,也没有设置SelectedItem,因为这意味着带有“删除”等选项的ContextMenus会出错。

认为的问题在于,在对其进行处理之前,您没有检查是否实际设置了SelectedItem。

相反,您应该在使用它之前验证SelectedItem不为null。

答案 1 :(得分:1)

您需要前往VisualTree以获取ListBox中的FrameworkELement。这应该在您的点击处理程序中完成。

private void deleteComment(object sender, RoutedEventArgs e)
{
    var menuItem = sender as MenuItem;
    var fe =VisualTreeHelper.GetParent(menuItem) as FrameworkElement;
    var comment = fe.DataContext as Comments;
    // deleteComment

}