3

我有一个上下文菜单,在WP7隐藏空上下文菜单

<toolkit:ContextMenuService.ContextMenu> 
    <toolkit:ContextMenu x:Name="onHoldContextMenu"> 
     <toolkit:MenuItem Header="Delete" Tag="{Binding}" Click="DeleteVisitorNote_Click" Visibility="{Binding DeleteContextVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
     <toolkit:MenuItem Header="View" Tag="{Binding}" Visibility="{Binding ViewContextVisibility, Converter={StaticResource BooleanToVisibilityConverter}}" Click="ViewVisitorContact_Click"/> 
    </toolkit:ContextMenu> 
</toolkit:ContextMenuService.ContextMenu> 

我改变AMD在视图模型两个项目的知名度,它工作正常。我的问题是,当我的可见性设置为false为这两个项目,我有一个空的白线,当我打开上下文菜单,我不知道该怎么隐藏...我想:

<toolkit:ContextMenuService.ContextMenu> 
    <toolkit:ContextMenu x:Name="onHoldContextMenu" Visibility="{Binding ContextVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"> 
     <toolkit:MenuItem Header="Delete" Tag="{Binding}" Click="DeleteVisitorNote_Click" Visibility="{Binding DeleteContextVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
     <toolkit:MenuItem Header="View" Tag="{Binding}" Visibility="{Binding ViewContextVisibility, Converter={StaticResource BooleanToVisibilityConverter}}" Click="ViewVisitorContact_Click"/> 
    </toolkit:ContextMenu> 
</toolkit:ContextMenuService.ContextMenu> 

但在这种情况下,我得到一个nullrefference异常...

如何隐藏上下文菜单,当它是空的?

+0

你可以完全禁用它吗? – Ku6opr 2012-03-05 14:15:22

+0

打开一个空的上下文菜单以及......( – 2012-03-05 14:24:10

回答

6

我在其他论坛上找到了此解决方案。

 <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid Hold="Grid_Hold"> 
         <toolkit:ContextMenuService.ContextMenu> 
          ... context menu items ... 
         </toolkit:ContextMenuService.ContextMenu> 

         ... listbox item contents ... 

        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 

    private void Grid_Hold(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     ItemViewModel listitem = (sender as FrameworkElement).DataContext as ItemViewModel; 
     e.Handled = listitem.DisableContextMenu(); 
    } 

设置e.Handled = true将从接收Hold事件阻断ContextMenu。在您的视图模型中,您将实现一些属性或方法,以返回是否显示ContextMenu

+0

我在设置'e.Handled = true'后得到'NullRefrenceException'。解决方法。 – 2015-07-20 06:23:51