2009-05-08 18 views

Odpowiedz

5

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; 
+1

nie będzie widoczność.Collapsed być lepszy? – Botz3000

+1

Dzięki - zaktualizowałem odpowiedź – ChrisF

0

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.

Powiązane problemy