Partilhar via


Como: Criar um TabControl que tem ContextMenus

Este tópico discute como criar um TabControl e anexar um ContextMenu em cada TabItem. Quando um usuário clica em um item no ContextMenu, o TabItem deve manipular o evento Click. O manipulador pode ser adicionado aos itens ContextMenu, mas você deve saber o que o alvo do item ContextMenu é para a ação apropriada ser tomada.

O exemplo a seguir mostra como fazer isto: O primeiro exemplo cria um TabItem e anexa um ContextMenu ao TabItem.

Exemplo

<TabItem Name="backgroundcolor" Header="Choose a Background Color"> 
<TabItem.ContextMenu>
<ContextMenu MenuItem.Click="MyMenuHandler">
     <MenuItem Header="Red" Name="red"/>
     <MenuItem Header="Blue" Name="blue"/>
     <MenuItem Header="Yellow" Name="yellow"/>
</ContextMenu>
</TabItem.ContextMenu>
<TabItem.Content>Some content about background colors.</TabItem.Content>
</TabItem>

O segundo exemplo mostra como criar um manipulador para manipular chamadas de evento Click.

void MyMenuHandler(object sender, RoutedEventArgs e)
{
ContextMenu cm = (ContextMenu)sender;
target = cm.PlacementTarget;
if(e.Source==red)
  {
   backgroundcolor.Background = Brushes.Red;
   backgroundcolor.Header = "Background red";
  }
  else if(e.Source==blue)
  {
   backgroundcolor.Background = Brushes.LightBlue;
   backgroundcolor.Header = "Background blue";
  }
  else if(e.Source==yellow)
  {
   backgroundcolor.Background = Brushes.Yellow;
   backgroundcolor.Header = "Background yellow";
  }
 }

Perceba que para encontrar o alvo de um ContextMenu, você pode usar o código no exemplo anterior ou o seguinte.

ContextMenu cm = (ContextMenu)ContextMenu.ItemsControlFromItemContainer                   ((MenuItem)e.OriginalSource);
UIElement placementTarget = cm.PlacementTarget;

Consulte também

Outros recursos

Exemplos do TabControl