すべてのアイテムの外観を変更する、カスタマイズされたコンテキストメニューを作成しました。これらのアイテムには、コンボボックスやボタンなどのさまざまなコントロールが含まれています。ボタンが押された場合、またはコンボボックス項目が選択された場合にメニューを閉じたいと思います。現在、メニューは開いたままです。ヒントを教えていただけますか?
これは、私が行ったことを示すための簡略化されたコードです。
<ContextMenu StaysOpen="False">
<MenuItem>
<MenuItem.Template>
<ControlTemplate>
<Grid MinWidth="200">
<Button Command="{Binding SomeWorkingCommandBinding}">OK</Button>
</Grid>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</ContextMenu>
前述のように、[OK]ボタンを押したらメニューを閉じたいと思います。
アップデート
次のボタン(またはその他のコントロール)は、BlendSDKを必要とせずにトリックを実行します。
<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>