如何:创建具有 ContextMenu 的 TabControl

更新:2007 年 11 月

本主题讨论如何创建 TabControl 并向每个 TabItem 附加一个 ContextMenu。当用户单击 ContextMenu 中的项时,TabItem 必须处理 Click 事件。可以将处理程序添加到 ContextMenu 项中,但是您必须知道 ContextMenu 项的目标,才能执行适当的操作。

下面的示例演示如何执行此操作。第一个示例创建一个 TabItem 并将 ContextMenu 附加到该 TabItem

示例

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

第二个示例演示如何使处理程序处理 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";
  }
 }

请注意,若要找到 ContextMenu 的目标,可以使用前面的示例或下面的示例中的代码。

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

请参见

其他资源

TabControl 示例