ContextMenu显示不到1秒

时间:2012-03-08 10:40:10

标签: c# wpf contextmenu

我想控制我的控制的上下文显示与否。

这是我的代码:

void MyControl_MouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    if ( some condition .....)
    {


            this.Focus();
            contextmeun.PlacementTarget = this;
            contextmeun.IsOpen = true;


    }
}

然而,它只是显示不到1秒然后立即消失。那是为什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

可能是因为您正在关注上下文菜单所属的控件,然后显示上下文菜单,但是当父控件获得焦点时,上下文菜单会关闭。

尝试在Xaml中设置上下文菜单,以获得正确的行为

<MyControl>
    <MyControl.ContextMenu>
        <ContextMenu>
            <!-- Define context menu here -->
        </ContextMenu>
    </MyControl.ContextMenu>
</MyControl>

答案 1 :(得分:0)

这可以用纯XAML格式完成,您需要做的就是将您的visibility上下文菜单与包含您的条件的bool属性绑定 -

<YourControl>
  <YourControl.Resources>
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
  </YourControl.Resources>
  <YourControl.ContextMenu>
   <ContextMenu Visibility="{Binding IsEnable,
                Converter={StaticResource BooleanToVisibilityConverter}}">
      <MenuItem Header="MenuItem1"/>
      <MenuItem Header="MenuItem2"/>
      <MenuItem Header="MenuItem3"/>
    </ContextMenu>
  </YourControl.ContextMenu>
</YourControl>

此处IsEnable是一个普通的CLR属性,在其getter中,您可以根据需要切换上下文菜单的可见性来获取条件的逻辑。