いくつかのmenuItemsを含むいくつかのContextMenuがあります。menuItemsの1つは「アイテムの追加...」です。ユーザーがこのアイテムを選択すると、使用可能なアイテムのリストを含むサブメニューが表示されます。
これが私のコンテキストメニューの説明です:
- アイテムを追加
- アイテム1
- アイテム2
- アイテム3
- アイテム4
- 消去
- コピー
'Add Item' menuItemのItemsSourceは、いくつかの監視可能なコレクションにバインドされています。コレクション内の各モデルには、「名前」と「IsEnabled」があります(ブール値を可視性に変換するコンバーターがあります)。'IsEnable' = falseのアイテムが表示されないことを除いて、すべて正常に動作しますが、スペースは表示されます。例:アイテム3にIsEnable=falseがあるとします。
アイテムを追加
- アイテム1
アイテム2
アイテム4
値がfalseの場合、bool2Visコンバーターは「折りたたみ」を返します。
なぜ私は間違っているのですか?
ContextMenuコードは次のとおりです。
<ContextMenu x:Key="mainContextMenu" DataContext="{Binding Source={x:Static fw:UIMainManager.Instance},Path=layoutManager}">
<MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}" >
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding ControlName}" Visibility="{Binding IsEnabled,Converter={StaticResource boolToVisibilityConverter}}"
Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}" CommandParameter="{Binding}"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Source={x:Static fw:ApplicationCommands.Copy}}" />
<MenuItem Header="Paste" Command="{Binding Source={x:Static fw:ApplicationCommands.Paste}}" />
<MenuItem Header="Cut" Command="{Binding Source={x:Static fw:ApplicationCommands.Cut}}" />
<MenuItem Header="Duplicated" Command="{Binding Source={x:Static fw:ApplicationCommands.DuplicateControl}}" />
<MenuItem Header="Delete" Command="{Binding Source={x:Static fw:ApplicationCommands.DeleteControl}}" />
</ContextMenu>