[英]WPF Button in ContextMenu needs StaysOpenOnClick
我在其中使用帶按鈕的ContextMenu。 每當按下特殊按鈕時,我都希望關閉ContextMenu。 我看到了一個名為“StaysOpenOnClick”的MenuItem的可能性......這種方法非常好。
這就是我需要的Button ..特別是XAML唯一的解決方案,如果有人可以提供幫助,那將是很好的!
提前致謝。
我不完全確定你在追求什么,但這里有一個帶按鈕的上下文菜單:
<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的解決方案。)
您可以通過使用BooleanAnimationUsingKeyFrames設置其IsOpen屬性的動畫來關閉ContextMenu。 這是僅限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中的所有按鈕都關閉了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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.