WPF功能区4.0 - 控制级别的大小定义

mel*_*etz 2 wpf ribbon

我已经定义了这样的东西

<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>
Run Code Online (Sandbox Code Playgroud)

但是所有按钮都很大.即使我为所有控件设置了一个带有Small的ControlSizeDefinition属性,它们仍然很大.我究竟做错了什么?

谢谢!

Sco*_*ott 5

MSDN:功能区布局和调整大小(大约在页面的一半以小文本):

控制组 -
相关的功能区控件可以在RibbonControlGroup中组合在一起.调整控件组的大小时,会将一个RibbonControlSizeDefinition应用于RibbonControlGroup中的所有控件.RibbonControlGroup位于RibbonGroup中,就像它是一个控件一样.

因此,如果多个RibbonButton是共同的RibbonControlGroup(如您的示例所示),那么它们将始终共享相同的RibbonControlSizeDefinition.在WPF功能区的当前状态下,您将无法指定不同的大小.您需要以不同方式对它们进行分组以实现此类效果.(也许把它们放在一个包裹在边框内的堆叠面板上......但我担心将非色带控件放在色带上有时会破坏色带内置的漂亮功能).

我怀疑你真的不打算将所有四个按钮放在一个控制组中.A 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>
Run Code Online (Sandbox Code Playgroud)