WPF Ribbon 4.0 - определение размера на уровне контроля - PullRequest
2 голосов
/ 02 марта 2011

Я определил что-то вроде этого

<ribbon:RibbonGroup Header="Size at Control Level">
                    <ribbon:RibbonControlGroup>
                        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 1">
                            <ribbon:RibbonButton.ControlSizeDefinition>
                                <ribbon:RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True"></ribbon:RibbonControlSizeDefinition>
                            </ribbon:RibbonButton.ControlSizeDefinition>
                        </ribbon:RibbonButton>
                        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 2">
                            <ribbon:RibbonButton.ControlSizeDefinition>
                                <ribbon:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="True"></ribbon:RibbonControlSizeDefinition>
                            </ribbon:RibbonButton.ControlSizeDefinition>
                        </ribbon:RibbonButton>
                        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 3"></ribbon:RibbonButton>
                        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 4"></ribbon:RibbonButton>
                    </ribbon:RibbonControlGroup>
                </ribbon:RibbonGroup>

Но все кнопки большие. Даже если я установил свойство ControlSizeDefinition со значением Small для всех элементов управления, они все еще велики. Что я делаю не так?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 13 июля 2011

С MSDN: макет ленты и изменение ее размера (примерно на полпути вниз страницы мелким текстом):

Группы управления -
Связанные элементы управления ленты можно сгруппировать вместе вRibbonControlGroup.При изменении размера группы управления one RibbonControlSizeDefinition применяется ко всем элементам управления в RibbonControlGroup .RibbonControlGroup располагается в RibbonGroup так, как если бы это был один элемент управления.

Так что, если несколько кнопок RibbonButton находятся в общем RibbonControlGroup (как показано в вашем примере), они всегда будут использовать один и тот же RibbonControlSizeDefinition.В текущем состоянии ленты WPF вы не сможете указать разные размеры.Вам нужно будет сгруппировать их по-разному, чтобы достичь такого эффекта.(возможно, помещая их в стековую панель, обернутую в рамку ... но я боюсь, что размещение элементов управления без ленты на ленте иногда портит приятные встроенные функции ленты).

Я подозреваю, что вы действительно этого не делаетеМы собираемся поместить все четыре кнопки в одну контрольную группу.RibbonControlGroup предназначен для «склеивания очень тесно связанных кнопок», так что между концом одной кнопки и началом следующей существует интервал 0.Это не работает для кнопок разного размера.Я думаю, вы можете просто захотеть, чтобы ваши кнопки были размещены непосредственно в группе лент, так как это действительно должен быть контейнер, который сообщает пользователю, что кнопки как-то связаны.

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

<ribbon:RibbonGroup Header="Size at Control Level">
    <ribbon:RibbonControlGroup>
        <ribbon:RibbonControlGroup.ControlSizeDefinition>
            <r:RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" />
        </ribbon:RibbonControlGroup.ControlSizeDefinition>
        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 1" />
        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 2" />
        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 3" />
        <ribbon:RibbonButton SmallImageSource="Images\wizard-icon16.png" LargeImageSource="Images\wizard-icon32.png" Label="Button 4" />
    </ribbon:RibbonControlGroup>
</ribbon:RibbonGroup>
1 голос
/ 25 марта 2011

Вы не делаете ничего плохого.Панель инструментов ленты автоматически масштабирует ваши изображения.Если он занимает меньше места, он будет использовать меньшие изображения для тех, которые вы называете маленькими, и продолжите использовать большие изображения для тех, которые вы называете большими.Но если есть место для отображения больших изображений, он сделает это, если сможет.

Вы должны увидеть это поведение при заполнении панели ленты.

0 голосов
/ 18 января 2019

Аналогично ответу Скотта, но с этим вы можете определить размер кнопок RibbonButtons независимо, а не только размер элементов группы.https://stackoverflow.com/a/8601891/9758687

0 голосов
/ 22 апреля 2011

Если вы установили SmallImageSource и не установили LargeImageSource, кнопка должна по умолчанию иметь небольшой размер.

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