私は、ボタン付きのContextMenuを使用します。 特別なButtonが押されるたびにContextMenuを閉じたいと思います。 "StaysOpenOnClick"と呼ばれるMenuItemの可能性を見ました。これは問題なく動作します。ContextMenuのWPFボタンにはStaysOpenOnClickが必要です
これは私がボタンに必要なものです。特に誰かが助けることができるなら、XAMLの唯一の解決策があります。
ありがとうございます。
私は、ボタン付きのContextMenuを使用します。 特別なButtonが押されるたびにContextMenuを閉じたいと思います。 "StaysOpenOnClick"と呼ばれるMenuItemの可能性を見ました。これは問題なく動作します。ContextMenuのWPFボタンにはStaysOpenOnClickが必要です
これは私がボタンに必要なものです。特に誰かが助けることができるなら、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>
X:今のようなあなたのXAMLを見て何このソリューションは動作しますが、のContextMenuは、今の私のContextMenu内のすべてのボタンのため閉鎖されます。私はただそれが "設定"という1つのボタンで閉じられるようにしたかった。あなたがEventTriggerのsourcenameにプロパティを設定することができ、この場合には
<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>
後ろのコードを削除ボタンのClickイベントは必要ないと思います。とにかく、このソリューションは動作しますが、ContextMenuはContextMenuのすべてのボタンで閉じられます。私はただそれが "設定"という1つのボタンで閉じられるようにしたかった。 – user1818797
私の編集した回答をご覧ください。それがあなたを助けるならばそれを受け入れて投票することを忘れないでください:) – mm8
これは私のために働く..ありがとう! :) – user1818797
私はあなたが後にしているものを完全にわからないんだけど、ここではボタンでコンテキストメニューです:
<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のみのソリューション、しかし。)
ボタンを切り替えてボタンを切り替えると、IsOpenプロパティにバインドできるはずです – MikeT
:「設定」ボタンの名前? –