4

いくつかの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>
4

1 に答える 1

1

は折りたたまれていると思いますMenuItemが、のItemContainerではありませんMenuItem。これを試して:

<MenuItem Header="Add Item" Name="addItemMenu" ItemsSource="{Binding ControlBoxItems}">
    <MenuItem.ItemContainerStyle>
        <Style>
            <Setter Property="Visibility" Value="{Binding IsEnabled, Converter={StaticResource boolToVisibilityConverter}}" />
        </Style>
    </MenuItem.ItemContainerStyle>
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding ControlName}"
                      Command="{Binding Source={x:Static fw:ApplicationCommands.AddControlToScene}}"
                      CommandParameter="{Binding}" />
        </DataTemplate>
    </MenuItem.ItemTemplate>
</MenuItem>
于 2012-05-01T09:02:51.710 に答える