使用controlsizedefinitions正确调整嵌套ribbongroup的大小

时间:2013-06-24 19:57:30

标签: layout custom-controls ribbon

我正在扩展RibbonGroup并删除填充/边距,以便它们可以嵌套而不会变得丑陋(只要标头未设置或为null);但是,我很难确定要添加到GroupSizeDefinitions的正确ControlSizeDefinition对象,我正在添加到该组以调整信息大小。

我的方法如下: 如果RibbonGroup中的Item是RibbonGroup,则添加一个ControlSizeDefinition,其Width设置为我希望控件在调整大小后的宽度。为了确定宽度,我请求控件的所需大小。很好,但我只有一个尺寸。最近我可以说,最好的方法是设置当前的GroupSizeDefinition。我怎么能这样做,或者如果这是错误的方法,那么正确的方法是什么?

编辑: 在VS2012中使用C#。

编辑:这里的代码几乎说明了这个问题。尝试使用和不使用组大小定义来查看行为。

<RibbonTab Header="Test">
    <RibbonGroup Header="Nestable">
        <RibbonGroup.GroupSizeDefinitions>
            <RibbonGroupSizeDefinition>
                <RibbonControlSizeDefinition ImageSize="Large" IsLabelVisible="True" IsCollapsed="False"/>
                <RibbonControlSizeDefinition Width="138"/>
                <RibbonControlSizeDefinition Width="148"/>
            </RibbonGroupSizeDefinition>
            <RibbonGroupSizeDefinition>
                <RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" IsCollapsed="False"/>
                <RibbonControlSizeDefinition Width="138"/>
                <RibbonControlSizeDefinition Width="148"/>
            </RibbonGroupSizeDefinition>
            <RibbonGroupSizeDefinition>
                <RibbonControlSizeDefinition ImageSize="Small" IsLabelVisible="False" IsCollapsed="False"/>
                <RibbonControlSizeDefinition Width="78"/>
                <RibbonControlSizeDefinition Width="148"/>
            </RibbonGroupSizeDefinition>
        </RibbonGroup.GroupSizeDefinitions>
        <RibbonButton Label="Button" SmallImageSource="16x16.png" LargeImageSource="32x32.png"/>
        <RibbonGroup>
            <RibbonButton Label="Button" SmallImageSource="16x16.png"/>
            <RibbonButton Label="Button" SmallImageSource="16x16.png"/>
            <RibbonButton Label="Button" SmallImageSource="16x16.png"/>
            <RibbonButton Label="Button" SmallImageSource="16x16.png"/>
        </RibbonGroup>
        <RibbonGroup>
            <RibbonButton Label="Button" SmallImageSource="16x16.png" LargeImageSource="32x32.png"/>
            <RibbonButton Label="Button" SmallImageSource="16x16.png" LargeImageSource="32x32.png"/>
            <RibbonButton Label="Button" SmallImageSource="16x16.png" LargeImageSource="32x32.png"/>
        </RibbonGroup>
    </RibbonGroup>
</RibbonTab>

1 个答案:

答案 0 :(得分:0)

不确定是否有其他人正在寻找答案;但是,我确实想出了一个。不幸的是,这不是一个简单的修复。每个嵌套的功能区组必须测量其各自的控件,并且基本上执行一个Arrange(没有实际进行布局)传递,以确定它应该具有的各种组大小定义的大小。然后在实际安排过程中,您必须手动设置孩子的控件大小定义。