gpt4 book ai didi

wpf - 使用模板化菜单项关闭 ContextMenu

转载 作者:行者123 更新时间:2023-12-02 06:03:02 25 4
gpt4 key购买 nike

我创建了一个自定义的上下文菜单,在其中更改了所有项目的外观。这些项目包含不同的控件,例如组合框和按钮。现在,我希望在按下按钮或选择组合框项目时关闭菜单。目前菜单保持打开状态。你能给我一点提示吗?

这是一个简化的代码,用于展示我所做的事情:

<ContextMenu StaysOpen="False">
<MenuItem>
<MenuItem.Template>
<ControlTemplate>
<Grid MinWidth="200">
<Button Command="{Binding SomeWorkingCommandBinding}">OK</Button>
</Grid>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</ContextMenu>

如上所述,我想在点击“确定”按钮时关闭菜单。

更新

以下按钮(或任何其他控件)无需 Blend SDK 即可实现此目的:

<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(ContextMenu.IsOpen)" Storyboard.Target="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContextMenu}}">
<DiscreteObjectKeyFrame KeyTime="0:0:0">
<DiscreteObjectKeyFrame.Value>
<sys:Boolean>False</sys:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>

最佳答案

使用 ChangePropertyAction,它是 Blend SDK 的一部分。单击按钮后立即更改 ContextMenu 的 IsOpen 属性:

<ContextMenu x:Name="MyContextMenu">
<MenuItem>
<MenuItem.Template>
<ControlTemplate>
<Grid MinWidth="200">
<Button Command="{Binding SomeWorkingCommandBinding}" Content="OK">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:ChangePropertyAction TargetObject="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContextMenu}}" PropertyName="IsOpen" Value="False"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</ContextMenu>

您将需要以下命名空间:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"                  
xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"

关于wpf - 使用模板化菜单项关闭 ContextMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com