Ich muss ein MenuItem programmatisch ein-/ausblenden, was wäre der beste Weg, dies zu tun?WPF MenüItem auf ContextMenu basierend auf Objekteigenschaft ausblenden
Antwort
Nun, fügen Sie ein MenuItem Sie etwas in dieser Richtung müssen:
var menuItem = new MenuItem() { Header = "Menu Name", Name = "Identifier", IsCheckable = true, IsChecked = visible };
menuItem.Click += new RoutedEventHandler(contextMenu_onClick);
int position = contextMenu.Items.Add(menuItem);
(aber Sie haben wahrscheinlich schon diese bekam).
Sie werden eine Möglichkeit brauchen, den Menüpunkt an die Immobilie zu binden - aber ohne Ihre Bewerbung zu sehen, kann ich Ihnen nicht den besten Weg empfehlen. Es gibt die Eigenschaft Tag, die ein Objekt speichert. die Uid-Eigenschaft, die eine Zeichenfolge speichert; die Eigenschaft Name, die auch eine Zeichenfolge speichert.
While:
menuItem.Visibility = Visibility.Visible;
und
menuItem.Visibility = Visibility.Collapsed;
sollte die Sichtbarkeit des Elements wechseln.
BEARBEITEN: Mit Collapsed wird der Menüeintrag ausgeblendet und nicht Platz im Menü reserviert - Sie wollen nicht wirklich Leerzeichen in einem Kontextmenü. (Danke an Botz3000 dafür)
Dann in Ihrem Code, wo der Wert der Eigenschaft geändert wird, finden Sie den Menüpunkt, den Sie mit der oben beschriebenen Verknüpfung anzeigen/ausblenden möchten. Sobald Sie das Einzelteil haben, können Sie schalten es Wert ist:
menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
Sind Sie sicher, dass Sie die MenuItem
verbergen? Es ist häufiger zu deaktivieren, mit WPF kommandier Rahmen:
<MenuItem Header="_MenuName" Command="{x:Static local:MyCommands.SomeCommand}" />
...
<!-- In the menu item or any of its ancestors: -->
<SomeControl.CommandBindings>
<CommandBinding Command="{x:Static local:MyCommands.SomeCommand}" Executed="Save_Executed" CanExecute="Save_CanExecture" />
</SomeControl.CommandBindings>
WPF verwendet das bool
Ergebnis Save_CanExecute
, um zu bestimmen, ob die MenuItem
‚s-Befehl kann zur Zeit ausführen, und aktivieren/deaktivieren Sie die MenuItem
entsprechend.
- 1. WPF ContextMenu
- 2. WPF-Zeile in Datagrid basierend auf Bedingung ausblenden
- 3. Ausblenden Registerkarte basierend auf Titel
- 4. Link ausblenden basierend auf Rolle
- 5. WPF Ausblenden auf einem Steuerelement
- 6. WPF Contextmenu und ListView
- 7. Default ContextMenu Style - WPF
- 8. WPF ContextMenu Stil Struktur
- 9. Wie WPF ContextMenu Animationen deaktivieren?
- 10. WPF contextMenu Klick-Problem
- 11. WPF-Trigger basierend auf Objekttyp
- 12. WPF Databinding basierend auf Bedingungen
- 13. ContextMenu (Popup) immer auf
- 14. Überprüfen auf verschachtelte Objekteigenschaft
- 15. DIV-Inhalt ausblenden/anzeigen basierend auf URL
- 16. ausblenden ascx Markup basierend auf Zustand
- 17. merge Objekte in einer bestimmten Liste basierend auf Objekteigenschaft
- 18. WPF: Unterdrücken ContextMenu für ListView
- 19. WPF: TreeViewItem Löschen von ContextMenu
- 20. CommandParameters in ContextMenu in WPF
- 21. von ContextMenu in WPF-Befehl
- 22. WPF: Wie man ContextMenu dynamisch generiert
- 23. WPF, C# - Gruppe nach Objekteigenschaft
- 24. WPF: Find Bindings Domäne Objekteigenschaft
- 25. Get-Taste auf contextmenu klicken
- 26. WPF Einstellung basierend auf dem Datentyp?
- 27. WPF-App (Maximale Spaltenbreite basierend auf Zeichenzählung)
- 28. WPF ändern Zelle Hintergrundfarbe basierend auf Inhalt
- 29. WPF: Switch Vorlage basierend auf UserControl Daten
- 30. Laden WPF-Themen basierend auf Monitor-Auflösung
würde nicht Sichtbarkeit. Kollabiert besser sein? – Botz3000
Danke - Ich habe die Antwort aktualisiert – ChrisF