Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在WPF功能区应用程序菜单中使用DataTemplate时,将显示其他嵌套级别_.net_Wpf_Datatemplate_Ribbon - Fatal编程技术网

.net 在WPF功能区应用程序菜单中使用DataTemplate时,将显示其他嵌套级别

.net 在WPF功能区应用程序菜单中使用DataTemplate时,将显示其他嵌套级别,.net,wpf,datatemplate,ribbon,.net,Wpf,Datatemplate,Ribbon,我正在使用Microsoft提供的 问题在于,当我使用数据模板填充RibbonaApplicationsPlitMenuItem时,我得到了一个我认为不应该存在的额外嵌套级别 以下是相关的WPF代码: <Window.Resources> <DataTemplate DataType="{x:Type cfg:PluginInfoConfigurationElement}" x:Key="GotoPluginAppMenuItem"> <ri

我正在使用Microsoft提供的

问题在于,当我使用数据模板填充
RibbonaApplicationsPlitMenuItem
时,我得到了一个我认为不应该存在的额外嵌套级别

以下是相关的WPF代码:

<Window.Resources>
    <DataTemplate DataType="{x:Type cfg:PluginInfoConfigurationElement}" x:Key="GotoPluginAppMenuItem">
        <ribbon:RibbonApplicationMenuItem 
                                Header="{Binding Path=Key}"
                                ImageSource="{Binding Path=Image}"/>
    </DataTemplate>
</Window.Resources>

            <ribbon:RibbonApplicationMenu>
                <ribbon:RibbonApplicationSplitMenuItem x:Name="LoadPluginMenuItem" 
                   ItemsSource="{Binding Source={StaticResource NlpModel}, Path=AvailablePlugins}" 
                   Header="Plugins"
                   ItemTemplate="{StaticResource GotoPluginAppMenuItem}">
                </ribbon:RibbonApplicationSplitMenuItem>
                <ribbon:RibbonApplicationSplitMenuItem x:Name="LoadPluginMenuItem2" 
                                                       Header="Plugins">
                    <ribbon:RibbonApplicationMenuItem 
                                Header="FooPlugin"
                                ImageSource="Images/icon-32.png"/>
                    <ribbon:RibbonApplicationMenuItem 
                                Header="Invalid"
                                ImageSource="Images/icon-32.png"/>
                </ribbon:RibbonApplicationSplitMenuItem>
                <!-- Other items to fill the menu -->
            </ribbon:RibbonApplicationMenu>

下面是我得到的:

使用数据模板

没有模板


如您所见,当使用DataTemplate时,会出现一个额外的嵌套级别。如何防止这种情况发生?

您需要设置
ItemContainerStyle
,而不是设置
ItemTemplate
,否则您将在
功能区:RibbonApplicationMenuItem
内设置一个
功能区:RibbonApplicationMenuItem

让·霍米纳尔: 下面是我使用的代码,它实现了我想要的结果:

<Style TargetType="{x:Type ribbon:RibbonApplicationMenuItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <ribbon:RibbonApplicationMenuItem Header="{Binding Path=Caption}"
                                                  ImageSource="{Binding Path=Image}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我希望您不会介意我根据您的回答添加我编写的代码。