2011-06-10 5 views
4

wpf tabitem에 컨텍스트 메뉴를 추가하려면 어떻게해야합니까? .csi에서 동적으로 tabitems를 만들어야합니다. 따라서 .xaml에서 정적으로 이렇게하면 작동하지 않습니다.wpf tabitem 헤더 컨텍스트 메뉴

I는 tabitem.header하는 컨텍스트 메뉴를 추가하는 시도했지만 이것은 I가있을 경우 몇 가지 문제점이있다 [TabItem에 1] [tabitem2] [tabitemtabitemtabitemta]

[tabitem2]의 폭과 일치하도록 연신 tabcontrol. 도움을 주시면 감사하겠습니다.

감사합니다.

답변

6

프로그래밍 방식으로 수행하는 방법은 this question을 참조하십시오. 트릭은 ContextMenu를 머리글 내용으로 설정 한 컨트롤에 설정하는 것입니다. 헤더를 사용하여 간단한 문자열 값을 설정하는 경우에는 작동하지 않습니다. 최소한 TextBlock 또는 ContentControl 또는 뭔가를 만들어야합니다. (특히 MVVM 패턴을 사용하는 경우) XAML을 통해 작업을 수행하는 방법에 관심있는 사람들을 위해


:

이있는 TabControl의 ItemContainerStyle에서의 ContextMenu를 설정합니다. 그러면 실제 탭 부분 (헤더)에만 적용되고 탭 내용에는 적용되지 않습니다. 탭이 ViewModel을 사용하는 경우, MenuItems에서 바인딩 등을 사용하여 특정 탭을 기반으로 다양한 동작을 얻을 수 있습니다.

<TabControl> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="ContextMenu"> 
       <Setter.Value> 
        <ContextMenu/> <!-- Define it here! --> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TabControl.ItemContainerStyle> 
</TabControl>