MenuItem绑定到TabControl水平显示

时间:2016-07-18 16:15:52

标签: wpf menuitem tabcontrol

我想将Menu的一部分绑定到TabControl TabItems,但让它们水平显示而不是子菜单。

背景:我可以将TabItem的{​​{1}}绑定到这样的TabControl中;

Menu

这产生了这个:

enter image description here

我想要的是它看起来像这样:

enter image description here

尝试这样做;

    <Style x:Key="TabMenuItem" TargetType="MenuItem">
    <Setter Property="Header" Value="{Binding Path=Header}" />
    <Setter Property="IsCheckable" Value="True" />
    <Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>
....
<Menu >
    <MenuItem Header="My Menu" HorizontalAlignment="Left"  >
        <MenuItem Header="Tabs" ItemsSource="{Binding ElementName=MyTabControl, Path=Items}" ItemContainerStyle="{StaticResource TabMenuItem}" />
        <MenuItem Header="SubItem 1"/>
        <MenuItem Header="SubItem 2"/>
        <MenuItem Header="SubItem 3"/>
    </MenuItem>
</Menu>

运行时返回以下消息;

  

未处理的类型&#39; System.InvalidOperationException&#39;发生在PresentationFramework.dll

中      

其他信息:在使用ItemsSource之前,项目集合必须为空。

1 个答案:

答案 0 :(得分:1)

一个非常难看的解决方案,需要沉重的造型:

  <Menu>
     <MenuItem Header="Tabs"   >
         <ListView ItemsSource="{Binding ElementName=MyTabControl, Path=Items}"/>
         <Separator></Separator>
         <MenuItem Header="SubItem 1"/>
         <MenuItem Header="SubItem 2"/>
         <MenuItem Header="SubItem 3"/>
     </MenuItem>
  </Menu>