Utworzyłem niestandardowe menu kontekstowe, w którym zmieniłem wygląd wszystkich elementów. Elementy te zawierają różne elementy sterujące, takie jak pola combobox i przyciski. Teraz chcę zamknąć menu po naciśnięciu przycisku lub wybraniu elementu combobox. Obecnie menu pozostaje otwarte. Czy możesz dać mi wskazówkę?Zamykanie menu kontekstowego z szablonem MenuItems
To jest uproszczony kod, aby pokazać, co zrobiłem:
<ContextMenu StaysOpen="False">
<MenuItem>
<MenuItem.Template>
<ControlTemplate>
<Grid MinWidth="200">
<Button Command="{Binding SomeWorkingCommandBinding}">OK</Button>
</Grid>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</ContextMenu>
Jak wspomniano, chciałbym, aby zamknąć menu kiedy uderzył przycisk OK.
UPDATE
Poniższy przycisk (lub jakakolwiek inna kontrola) załatwia sprawę bez konieczności zmieszanych 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>
podoba mi się pomysł, jednak próbka nie działa od TargetObject nie może być ElementName poza ControlTemplate, więc użyłem RelativeSource za to. Jednak do mojego pierwszego posta dodałem rozwiązanie bez Blend. – Jaster
Poprawnie - Zaktualizowana odpowiedź z RelativeSource (dla przyszłych referencji ...) – Blachshma