来自资源时 wpf 子菜单不起作用

wpf submenu not working when coming from resources

我想使用在资源中定义的 wpf 菜单项作为菜单和子菜单。当用作普通菜单时它可以工作,但我不能让它在子菜单上工作。

这是一个示例代码:

    <Grid Background="Transparent">

    <Grid.Resources>
        <x:Array Type="{x:Type sys:Object}" x:Key="Extensions">
            <Separator />
            <MenuItem Header="Extension MenuItem 1" />
            <MenuItem Header="Extension MenuItem 2" />
            <MenuItem Header="Extension MenuItem 3" />
        </x:Array>
    </Grid.Resources>

    <Grid.ContextMenu>
        <ContextMenu>
            <ContextMenu.ItemsSource>
                <CompositeCollection>
                    <MenuItem Header="Standard MenuItem 1" />
                    <CollectionContainer Collection="{StaticResource Extensions}" />
                    <MenuItem Header="Extension" >
                        <CollectionContainer Collection="{StaticResource Extensions}" />
                    </MenuItem>
                </CompositeCollection>
            </ContextMenu.ItemsSource>
        </ContextMenu>
    </Grid.ContextMenu>

</Grid>

我得到的结果是:

谁能给我正确的 wpf 语法?

蒂亚

您需要指定 ItemSource 并正确绑定资源 :

<MenuItem Header="Extension" >
   <MenuItem.ItemsSource>
    <CompositeCollection>
     <CollectionContainer Collection="{Binding Source={StaticResource Extensions}}"  />
    </CompositeCollection>
   </MenuItem.ItemsSource>
</MenuItem>