【问题标题】:Open a context menu via command binding通过命令绑定打开上下文菜单
【发布时间】:2013-06-24 16:46:44
【问题描述】:

我正在尝试绑定一个按钮以在左键单击时打开其上下文菜单。我知道如何以编程方式执行此操作,但有没有办法使用默认命令绑定来执行此操作?

我目前有:

    <Button Command="ApplicationCommands.ContextMenu">
        <Button.ContextMenu>
            <ContextMenu>
                <MenuItem ...

但没有这样的运气......如果我这样做,那么按钮就会被禁用。我猜这表明该命令无法执行,但为什么呢?

【问题讨论】:

    标签: wpf binding command


    【解决方案1】:

    你可以通过几种方式做到这一点,这里有两个:

    1) 纯 XAML

    <Button Content="My Button">
        <Button.Triggers>
            <EventTrigger RoutedEvent="Button.Click">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
                                <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True"/>
                            </BooleanAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Button.Triggers>
        <Button.ContextMenu>
            <ContextMenu >
                <MenuItem Header="ABC"/>
            </ContextMenu>
        </Button.ContextMenu>
    </Button>
    

    2) 使用事件

    <Button Content="My Button" Click="Button_Click">
        <Button.ContextMenu>
            <ContextMenu >
                <MenuItem Header="ABC"/>
            </ContextMenu>
        </Button.ContextMenu>
    </Button>
    
    private void Button_Click(object sender, RoutedEventArgs e)
    {
       ContextMenu contextMenu = (sender as Button).ContextMenu;
       contextMenu.PlacementTarget = sender as UIElement;
       contextMenu.IsOpen = true;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-23
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多