【问题标题】:Hide empty context menu隐藏空的上下文菜单
【发布时间】:2012-03-05 14:07:02
【问题描述】:

我在 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>

我正在更改视图模型中两个项目的可见性,它工作正常。我的问题是,当我将这两个项目的可见性设置为 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>

但在这种情况下,我得到了一个空引用异常......

上下文菜单为空时如何隐藏?

【问题讨论】:

  • 也会打开一个空的上下文菜单... :(

标签: windows-phone-7 contextmenu visibility nullreferenceexception


【解决方案1】:

我在另一个论坛上找到了这个解决方案。

        <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 将阻止ContextMenu 接收Hold 事件。在您的视图模型中,您将实现一些属性或方法来返回是否显示ContextMenu

【讨论】:

  • 我在设置e.Handled=true 后得到NullRefrenceException。请提出解决方法。
猜你喜欢
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
相关资源
最近更新 更多