RibbonGroupsPanel ... принимает только экземпляры IProvideStarLayoutInfo? - PullRequest
1 голос
/ 02 марта 2011

Я пытаюсь использовать RibbonGallery в своем приложении, но я получаю эту ошибку во время выполнения, когда загружена вкладка, содержащая галерею:

"RibbonGroupsPanel RegisterStarLayoutProvider и UnregisterStarLayoutProvider принимают только экземпляры IProvideStarLayoutInfoИмя параметра: starLayoutInfoProvider "

Есть идеи, что не так?

Вот код:

<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>

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Элемент управления RibbonGallery должен быть помещен в элемент управления, который может использовать преимущества RibbonGallery, например, RibbonSplitButton или RibbonComboBox. Вот пример использования галереи в 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 скопировано с http://msdn.microsoft.com/en-us/library/microsoft.windows.controls.ribbon.ribbongallery.aspx.

Если элемент управления получен из RibbonMenuButton, то он может содержать RibbonGallery из-за свойства HasRibbon.

2 голосов
/ 02 февраля 2014

Класс RibbonMenuItemsPanel класса System.Windows.Controls.Ribbon.Primitives позволяет разместить RibbonGallery в RibbonGroup.Этот класс реализует интерфейс ISupportStarLayout.

Определите пространство имен примитивов в элементе Window (также может быть 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" 
        ... >

Часть RibbonGroup:

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

Обратите внимание, что я использую пространство имен System.Windows.Controls.Ribbon (.Net 4.5), а не пространство имен Microsoft.Windows.Controls.Ribbon-name.Но это должно быть почти то же самое.

0 голосов
/ 02 марта 2011

Я не вижу ни одной RibbonGroupsPanel в вашем xaml, что наводит меня на мысль, что вы не показываете все соответствующие xaml.

В любом случае он сообщает, что вы помещаете неправильный элемент в RibbonGroupsPanel.RegisterStarLayoutProvider и принимает только те типы, которые реализуют IProvideStarLayoutInfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...