折叠时的WPF ContextMenu片段

时间:2014-01-14 11:26:38

标签: c# wpf

当我激活上下文菜单支持时,我想要显示一个上下文菜单,而当上下文菜单支持被取消激活时,我没有显示。

因此我将此上下文菜单应用于按钮:

<Button.ContextMenu>
   <ContextMenu>
        <MenuItem Name="MyContextMenu" Header="Load To Stack" Visibility="Collapsed">
        <MenuItem Name="item0" Header="Stack 1" IsCheckable="False" Click="MenuItem_Click"/>
        <MenuItem Name="item1" Header="Stack 2" IsCheckable="False" Click="MenuItem_Click"/>
        <MenuItem Name="item2" Header="Stack 3" IsCheckable="False" Clic="MenuItem_Click"/>
        <MenuItem Name="item3" Header="Stack 4" IsCheckable="False" Click="MenuItem_Click"/>
        </MenuItem>
    </ContextMenu>
</Button.ContextMenu>

我通过此功能设置Main-Context-Menu-Item的可见性:

public bool ContextMode
    {
        get { return StackMode; }
        set 
        {
            if (value)
                MyContextMenu.Visibility = Visibility.Visible;
            else
                MyContextMenu.Visibility = Visibility.Collapsed;
        }
    }

如果可见性已折叠,则保留此片段:  enter image description here

我还尝试停用整个上下文菜单,但这不起作用。 上下文菜单是否已停用,我尝试让它弹出上下文菜单不显示。 如果我在尝试取消停用的c-m后激活上下文菜单,则会显示两个菜单。

也许有人知道如何摆脱所显示的片段。

1 个答案:

答案 0 :(得分:1)

您需要处理拥有 ContextMenuOpening的{​​{1}}事件:

FrameworkElement

代码隐藏:

<Button Name="Button"
        Content="Test"
        VerticalAlignment="Center"
        HorizontalAlignment="Center"
        Padding="10"
        Click="ButtonBase_OnClick">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Name="Item0" Header="Load To Stack">
                <MenuItem Name="SubItem0" Header="Stack 1" IsCheckable="False"/>
                <MenuItem Name="SubItem1" Header="Stack 2" IsCheckable="False"/>
                <MenuItem Name="SubItem2" Header="Stack 3" IsCheckable="False"/>
                <MenuItem Name="SubItem3" Header="Stack 4" IsCheckable="False"/>
            </MenuItem>
        </ContextMenu>
    </Button.ContextMenu>
</Button>