melculetz
melculetz

Reputation: 1971

RibbonGroupsPanel ... accepts only IProvideStarLayoutInfo instances?

I am trying to use a RibbonGallery in my application, but I get this error at runtime, when the tab which contains the gallery is loaded:

"RibbonGroupsPanel RegisterStarLayoutProvider and UnregisterStarLayoutProvider accepts only IProvideStarLayoutInfo instances. Parameter name: starLayoutInfoProvider"

Any idea what isn't right?

Here's the code:

<ribbon:RibbonGallery MaxColumnCount="1">
                        <ribbon:RibbonGalleryCategory>
                            <ribbon:RibbonGalleryItem Content="Green" Foreground="Green" />
                            <ribbon:RibbonGalleryItem Content="Blue" Foreground="Blue" />
                            <ribbon:RibbonGalleryItem Content="Orange" Foreground="Orange" />
                        </ribbon:RibbonGalleryCategory>
                    </ribbon:RibbonGallery>

Upvotes: 1

Views: 2529

Answers (3)

zznobody
zznobody

Reputation: 196

The RibbonMenuItemsPanel-class of the System.Windows.Controls.Ribbon.Primitives allows to place a RibbonGallery in a RibbonGroup. This class implements the ISupportStarLayout-interface.

Define the primitives-Namespace in the Window-element (could also be RibbonWindow):

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell"
        xmlns:primitives="clr-namespace:System.Windows.Controls.Ribbon.Primitives;assembly=System.Windows.Controls.Ribbon" 
        ... >

The RibbonGroup-part:

<RibbonGroup Header="MyRibbonGroup">
    <primitives:RibbonMenuItemsPanel Margin="0,3,0,0">
        <RibbonGallery ...>
            <RibbonGalleryCategory ...>
                ...
            </RibbonGalleryCategory>
        </RibbonGallery>
    </primitives:RibbonMenuItemsPanel>
</RibbonGroup>

Note that i use the System.Windows.Controls.Ribbon-namespace (.Net 4.5) and not the Microsoft.Windows.Controls.Ribbon-namespace. But this should be nearly the same.

Upvotes: 2

njebert
njebert

Reputation: 544

The RibbonGallery control must be placed within a control that can take advantage of the RibbonGallery, like a RibbonSplitButton or a RibbonComboBox. Here is an example of using a gallery in a RibbonComboBox:

<ribbon:RibbonComboBox Label="1" 
                  SmallImageSource="Images/RightArrowShort_Green16.png"
                  SelectionBoxWidth="62"
                  VerticalAlignment="Center" 
                  IsEditable="True" >
    <ribbon:RibbonGallery SelectedValue="Green"
                          SelectedValuePath="Content"
                          MaxColumnCount="1">
        <ribbon:RibbonGalleryCategory>
            <ribbon:RibbonGalleryItem Content="Green" Foreground="Green" />
            <ribbon:RibbonGalleryItem Content="Blue" Foreground="Blue" />
            <ribbon:RibbonGalleryItem Content="Orange" Foreground="Orange" />
        </ribbon:RibbonGalleryCategory>
    </ribbon:RibbonGallery>
</ribbon:RibbonComboBox>

XAML copied from http://msdn.microsoft.com/en-us/library/microsoft.windows.controls.ribbon.ribbongallery.aspx.

If a control is derived from RibbonMenuButton then it can contain a RibbonGallery because of the HasRibbon property.

Upvotes: 3

Elad Katz
Elad Katz

Reputation: 7601

I don't see any RibbonGroupsPanel in your xaml which leads me to thinking that you're not showing all of the relevant xaml.

In any case, it tells you that you're putting the wrong element inside RibbonGroupsPanel.RegisterStarLayoutProvider and that it accepts only types that implements IProvideStarLayoutInfo .

Upvotes: 0

Related Questions