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

相關問題