来自资源时 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>
我想使用在资源中定义的 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>