2017-10-10 1 views
0

현재 동적으로 생성 된 상황에 맞는 메뉴를 만들려고합니다. 컨텍스트 메뉴의 ItemsSource 속성에 현재 ObservableCollection<MenuItem>을 바인딩하고 있습니다. 이제 내가 선택한 항목에 따라 메뉴가 열리면 목록에있는 항목의 가시성을 설정하려고합니다.
나는이메뉴 열기 속성을 설정하는 메뉴 항목

public class CtContextMenuItem : MenuItem 
{ 
    public delegate Visibility VisibilityDelegate(); 
    public VisibilityDelegate IsVisibleDelegate = null; 
} 

처럼 MenuItem에서 상속 노력 그리고 상황에 맞는 메뉴가 열릴 때 VisibilityDelegate의 결과에 Visibility을 설정할하지만 난 MenuItem에서 호출되는 모든 이벤트 또는 방법을 찾을 수 없습니다 상황에 맞는 메뉴가 열려있을 때
할 방법이 있습니까 아니면 ContextMenuOpening을 듣는 함수 안에 메뉴의 모든 항목을 만들어야합니까?

+0

* - 예. 메뉴 항목을 열거하고 해당 대리인을 직접 또는 속성을 통해 호출합니다 (데이터 템플릿 바인딩이 사용되는 경우). 사용자 정의 컨트롤을 사용하는 대신 [mvvm] (https://stackoverflow.com/q/15566824/1997232)을 약간 추가하십시오. – Sinatr

답변

0

바인드 CtContextMenuItem 유형은 당신이 당신의 XAML에 결합 할 수있는 Visibility 또는 bool재산이있는 ObservableCollection<CtContextMenuItem>ItemsSource. 이런 식으로 뭔가 : * "ContextMenuOpening을 듣고"

public class CtContextMenuItem 
{ 
    public Visibility IsVisible { get; set; } 
} 

<ContextMenu ItemsSource="{Binding TheSourceCollection}"> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Visibility" Value="{Binding IsVisible}" /> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
</ContextMenu>