contextMenu中的wpf按钮需要停留



我使用带有按钮的上下文对。每当按下特殊按钮时,我都希望关闭ContextMenu。我看到了一种被称为" StayopenOnClick"的Menuitem的可能性。这很好。

这是我对按钮所需的。尤其是XAML只有解决方案,如果有人可以帮助您!

预先感谢。

您可以通过使用booleananimationingkeyframes对其同条属性进行动画效果来关闭上下文menu。这是唯一的XAML解决方案:

<Grid Background="Yellow" Width="50" Height="50">
    <Grid.Resources>
        <Storyboard x:Key="sb">
            <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen">
                <DiscreteBooleanKeyFrame KeyTime="0" Value="False" />
            </BooleanAnimationUsingKeyFrames>
        </Storyboard>
    </Grid.Resources>
    <Grid.ContextMenu>
        <ContextMenu x:Name="contextMenu">
            <MenuItem>
                <MenuItem.Header>
                    <Button Content="TheButton" Click="OnButtonClick" />
                </MenuItem.Header>
            </MenuItem>
            <ContextMenu.Triggers>
                <EventTrigger RoutedEvent="ButtonBase.Click">
                    <BeginStoryboard Storyboard="{StaticResource sb}" />
                </EventTrigger>
            </ContextMenu.Triggers>
        </ContextMenu>
    </Grid.ContextMenu>
</Grid>

此解决方案有效,但是现在的上下文对我的ContextMenu中的所有按钮都关闭了。我只是希望只使用一个称为"设置"的按钮将其关闭。

在这种情况下,您可以将EventTrigger的Sourcename属性设置为X:"设置"按钮的名称:

<Grid Background="Yellow" Width="50" Height="50">
        <Grid.Resources>
            <Storyboard x:Key="sb">
                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen">
                    <DiscreteBooleanKeyFrame KeyTime="0" Value="False" />
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </Grid.Resources>
        <Grid.ContextMenu>
            <ContextMenu x:Name="contextMenu">
                <MenuItem>
                    <MenuItem.Header>
                        <Button Content="Settings" x:Name="settingsButton" />
                    </MenuItem.Header>
                </MenuItem>
                <MenuItem>
                    <MenuItem.Header>
                        <Button Content="About" />
                    </MenuItem.Header>
                </MenuItem>
                <ContextMenu.Triggers>
                    <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="settingsButton">
                        <BeginStoryboard Storyboard="{StaticResource sb}" />
                    </EventTrigger>
                </ContextMenu.Triggers>
            </ContextMenu>
        </Grid.ContextMenu>
 </Grid>

我不完全确定您的追求,但这是一个带有按钮的上下文菜单:

<TextBlock
    Text="Hello, world!">
    <TextBlock.ContextMenu>
        <ContextMenu x:Name="contextMenu">
            <MenuItem>
                <MenuItem.Header>
                    <Button Content="MyButton" Click="OnMenuButtonClick" />
                </MenuItem.Header>
            </MenuItem>
        </ContextMenu>
    </TextBlock.ContextMenu>
</TextBlock>

如果按下按下按钮,它将关闭上下文菜单:

private void OnMenuButtonClick(object sender, RoutedEventArgs e)
{
    contextMenu.IsOpen = false;
}

(不过,不是仅XAML的解决方案。)

最新更新