문제

Menuitem을 프로그래밍 방식으로 보여 주거나 숨겨야합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

글쎄, menuitem을 추가하려면이 라인을 따라 무언가가 필요합니다.

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);

(그러나 당신은 이미 이것을 얻었을 것입니다).

메뉴 항목을 속성에 묶는 방법이 필요하지만 응용 프로그램을 보지 않으면 서 가장 좋은 방법을 제안 할 수는 없습니다. 객체를 저장하는 태그 속성이 있습니다. 문자열을 저장하는 UID 속성; 문자열을 저장하는 이름 속성.

하는 동안:

menuItem.Visibility = Visibility.Visible;

그리고

menuItem.Visibility = Visibility.Collapsed;

항목의 가시성을 전환해야합니다.

편집하다: 붕괴를 사용하면 메뉴 항목이 숨겨지고 메뉴에서 공간을 예약하지 않습니다. 컨텍스트 메뉴에서 빈 공간을 원하지 않습니다. (이것에 대해 Botz3000에 감사합니다)

그런 다음 속성 값이 변경된 코드에서 위에서 설명한 링크를 사용하여 표시/숨기려는 메뉴 항목을 찾을 수 있습니다. 항목이 있으면 값을 전환 할 수 있습니다.

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;

다른 팁

당신이 숨기고 싶습니까? MenuItem? WPF의 명령 프레임 워크를 사용하여 비활성화하는 것이 더 일반적입니다.

<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는 bool 에 의한 결과 Save_CanExecute 있는지 여부를 결정합니다 MenuItem의 명령은 현재 실행할 수 있으며 MenuItem 따라서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top