我正在使用ObjectDataProvider和DataTemplate填充菜单栏中的MenuItem。 (WPF,C#/XAML)请参见下面的代码段。

结果:出现顶部菜单项,当我单击它时,包装菜单项(带有绑定(bind)的标题文本的项)与表示存在子项的小箭头一起出现,但是将鼠标悬停或单击箭头不会显示子项,无法访问它们。

预期结果: children 是可见的并且行为正常。

片段:

<ObjectDataProvider x:Key="Brokers" ObjectInstance="{x:Static brokers:BrokerManager.Instance}" MethodName="GetBrokers" IsAsynchronous="True" />
        <DataTemplate x:Key="BrokerMenuItem" DataType="IBroker">
            <MenuItem Header="{Binding Path=Name}">
                <MenuItem Header="Connect" />
                <MenuItem Header="Disconnect" />
            </MenuItem>
        </DataTemplate>

<MenuItem Header="Brokers" ItemsSource="{Binding Source={StaticResource Brokers}}" ItemTemplate="{DynamicResource BrokerMenuItem}"/>

最佳答案

arsenmrkt:我有完全相同的问题,如果我使用DataTemplate填充MenuItem,我似乎无法将子代添加到任何这些生成的项中。但是,我不明白您的回答,我应该如何使用ContentPresenter来解决此问题?

编辑:
实际上,我的问题并不完全相同,因为我试图将集合的集合绑定(bind)到菜单。我想我已经使用HierarchicalDataTemplate使它工作了:

<Menu>
    <MenuItem Header="{Binding Name}" ItemsSource="{Binding MenuOptions}">
        <MenuItem.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Categories}">
                <MenuItem Header="{Binding Name}"/>
                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>
                        <MenuItem Header="{Binding Name}"/>
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </MenuItem.ItemTemplate>
    </MenuItem>
</Menu>

这对您NicholasF有帮助吗?

关于c# - WPF MenuItem子项未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/933403/

10-16 16:27