2016-07-18 10 views
1

Menuの一部をTabControlTabItemsにバインドしますが、サブメニューの代わりに水平に表示させます。TabControlにバインディングするMenuItemが水平に表示されます

背景:これは、TabControlTabItemをこのようにMenuにバインドすることができます。

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

これは、この生成します。私は何をしたいが、それはこのように見えるように

enter image description here

です:

enter image description here

これをやってみました。

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

実行時に次のメッセージが返されます。

'System.InvalidOperationException' 種類の未処理の例外はPresentationFramework.dll

で発生しました追加情報:ItemsコレクションはのItemsSourceを使用する前に、空である必要があります。重いスタイリングを必要と

+1

'ItemsSource' **、**はXAMLで要素を追加します。問題を解決するには、階層を平坦化する必要があります – lokusking

+0

@lokusking how? – Xaphann

答えて

1

Aは本当に醜いソリューション:あなたが設定カント

<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> 
関連する問題