Potrzebuję programowo pokazać/ukryć MenuItem, jaki byłby najlepszy sposób to zrobić?WPF hide MenuItem na ContextMenu na podstawie właściwości obiektu
Odpowiedz
Dobrze, aby dodać MenuItem trzeba coś wzdłuż tych linii:
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);
(ale prawdopodobnie już dostał ten temat).
Będziesz potrzebował jakiegoś sposobu związania pozycji z menu z nieruchomością - ale nie widząc twojego wniosku, nie mogę zaproponować najlepszego sposobu. Istnieje własność Tag, która przechowuje obiekt; właściwość Uid, która przechowuje ciąg; właściwość Name, która również przechowuje ciąg znaków.
Podczas:
menuItem.Visibility = Visibility.Visible;
i
menuItem.Visibility = Visibility.Collapsed;
należy przełączyć widoczność elementu.
EDYCJA: Korzystanie ze zwiniętego elementu spowoduje ukrycie pozycji menu, a nie zarezerwowanie miejsca w menu - w menu kontekstowym naprawdę nie ma pustych miejsc. (dzięki Botz3000 za to)
Następnie w swoim kodzie, gdzie wartość nieruchomości zostanie zmieniona, znajdziesz pozycję menu, którą chcesz pokazać/ukryć za pomocą opisanego powyżej sprzężenia. Gdy masz pozycję można przełączać jego wartość:
menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
Czy na pewno chcesz ukryć MenuItem
? To jest bardziej powszechne, aby ją wyłączyć za pomocą ramy WPF jest imponujący:
<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 użyje bool
wynik Save_CanExecute
celu ustalenia, czy komenda MenuItem
„s można obecnie wykonywać i włączyć/wyłączyć MenuItem
odpowiednio.
- 1. WPF ListBoxItem i ContextMenu
- 2. Linq Distinct na podstawie właściwości obiektu
- 3. Filtrowanie właściwości obiektu na podstawie wartości
- 4. Bind ContextMenu MenuItem widoczność do wyboru ListView
- 5. Klasa właściwości płaszcza na podstawie innej właściwości?
- 6. Jak powiązać polecenie z MenuItem (WPF)?
- 7. IsChecked Wiązanie nie działa w MenuItem w ContextMenu
- 8. Pobieranie pojedynczego obiektu Realm na podstawie wartości właściwości
- 9. Usunąć duplikaty z tablicy na podstawie właściwości obiektu?
- 10. Zastosuj styl na podstawie wartości właściwości
- 11. Zmiana ng-hide na podstawie wartości zmiennej w angular.js
- 12. Jak ustawić ikonę w MenuItem ContextMenu podczas używania ItemContainerStyle
- 13. WPF: Jak otworzyć ContextMenu ze wszystkich obszarów formantu siatki
- 14. Hide caret w WPF TextBox
- 15. Style zmiany Silverlight na podstawie wartości właściwości obiektów (np. DataTrigger)
- 16. Jak uruchomić WPF na podstawie argumentów
- 17. List.Contains na podstawie właściwości pozycji listy
- 18. Zmień klasę div na podstawie właściwości ViewModel
- 19. Utwórz NSSet z NSArray na podstawie właściwości
- 20. Policz rekordy SQL na podstawie właściwości rodzeństwa
- 21. Jak scalić dwie listy na podstawie właściwości?
- 22. Tworzenie właściwości ViewBag na podstawie ciągów znaków
- 23. Zestaw właściwości IsEnabled ComboBox na podstawie SelectedItem
- 24. Opóźnienie RaiseCanExecuteChanged z ContextMenu
- 25. Wyszukiwanie obiektów na podstawie zmiennej obiektu
- 26. Ustawianie właściwości PlacementTarget w pliku kontekstowym WPF w XAML?
- 27. Wyszukaj pliki na Dysku Google na podstawie nowego zasobu właściwości
- 28. C# Podział listy na podlisty na podstawie wartości określonej właściwości?
- 29. WPO ContextMenu Woes: Jak ustawić DataContext w ContextMenu?
- 30. WPF ComboBox/ListBox z wielokrotny na podstawie Enum z flagami
nie będzie widoczność.Collapsed być lepszy? – Botz3000
Dzięki - zaktualizowałem odpowiedź – ChrisF