我正在使用来自 RibbonControlsLibrary.dll 4.0.0.11019、.NET 4.0、C#、WPF 的功能区。可以在此处下载免费示例:http: //www.microsoft.com/en-us/download/details.aspx?id=11877
我的Ribbon
.
在我的一个RibbonGroup
中,我Ribbon
有很多按钮分开RibbonSeparator
(见下图)。我知道最好使用多个RibbonGroup
's,但由于特定原因,我不能这样做。当我调整我Ribbon
的大小时,默认Ribbon
布局会使按钮变小。在某个时刻,组折叠成一个按钮。问题是崩溃的时刻来得太早了。我希望我的一些按钮变得更小。这很关键,因为我的一些客户可能有小型显示器。
为了展示它是如何发生的,我将按钮的所有图像更改为示例图像,并将按钮中的所有字母更改为“t”:
图为我崩溃的瞬间RibbonGroup
。如果我将窗口再缩短一点,RibbonGroup
就会崩溃。很容易看出,许多按钮仍然可以隐藏它们的文本,或者一些图标可能会变小。
我尝试使用RibbonGroup.GroupSizeDefinitions
属性来设置按钮大小的所有可能变体:
int groupItemsCount = group.Items.Count;
group.GroupSizeDefinitions.Clear();
// Fully expanded definition
var expandedDefinition = new RibbonGroupSizeDefinition();
for (int i = 0; i < groupItemsCount; i++)
{
expandedDefinition.ControlSizeDefinitions.Add(new RibbonControlSizeDefinition {
ImageSize = RibbonImageSize.Large,
IsLabelVisible = true
});
}
group.GroupSizeDefinitions.Add(expandedDefinition);
// Buttons of Ribbon gradually lose label and have small image
for (int i = groupItemsCount - 1; i >= 0; i--)
{
var def = new RibbonGroupSizeDefinition();
for (int j = 0; j < groupItemsCount; j++)
{
if (j >= i)
{
def.ControlSizeDefinitions.Add(new RibbonControlSizeDefinition
{
ImageSize = RibbonImageSize.Small,
IsLabelVisible = false
});
}
else
{
def.ControlSizeDefinitions.Add(new RibbonControlSizeDefinition
{
ImageSize = RibbonImageSize.Large,
IsLabelVisible = true
});
}
}
group.GroupSizeDefinitions.Add(def);
}
// Collapsed definition
group.GroupSizeDefinitions.Add(new RibbonGroupSizeDefinition { IsCollapsed = true });
然后随着调整窗口大小,按钮从右到左变小。以下是Ribbon
相同尺寸的相同外观:
但是窗口调整大小自然会变慢,有时Ribbon
调整大小会崩溃:有时按钮在调整大小后会停止改变它们的大小Ribbon
。
所以最后,我怎样才能Ribbon
优化使用可用空间?当然,首选变体是默认Ribbon
布局行为,但我怎么知道Ribbon
它允许隐藏文本标签并为所有按钮制作更小的图像?