При использовании DataTemplate в меню приложения ленты WPF появляется дополнительный уровень вложенности - PullRequest
4 голосов
/ 15 февраля 2011

Я использую WPF Ribbon control , предоставленный Microsoft.

Проблема заключается в том, что когда я использую DataTemplate для заполнения RibbonApplicationSplitMenuItem, я получаю дополнительный уровень вложенностия считаю, что там не должно быть.

Вот соответствующий код 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 http://img571.imageshack.us/img571/9915/screentemplate.png С шаблоном данных.

что бы я хотел http://img43.imageshack.us/img43/9168/screendesired.png Без шаблона.

Как видите, при использовании DataTemplate появляется дополнительный уровень вложенности.Как я могу предотвратить это?

1 Ответ

8 голосов
/ 17 февраля 2011

Вместо установки ItemTemplate необходимо установить ItemContainerStyle, в противном случае вы получите ribbon:RibbonApplicationMenuItem внутри ribbon: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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...