Есть ли в Fluent Ribbon Control Suite способ сделать так, чтобы группы контекстных вкладок отображались первыми, а не последними? Я использовал более старую сборку и имел контекстную группу вкладок для первых трех элементов вкладок и еще два без группы. Скачал и собрал новейший исходник; вкладки в группе теперь находятся на правом конце. Я хочу, чтобы они отображались в том же порядке, в котором они указаны в xaml. Я не вижу никаких очевидных свойств, которые позволили бы мне указать порядок.
Свободная лента: указать положение групп контекстных вкладок?
Ответы (1)
Поскольку ни у кого не было ответа на этот вопрос, и я только что получил за это значок Tumbleweed :), я решил опубликовать свое решение, которое заключалось в изменении кода Fluent Ribbon Control Suite. Я изменил ArrangeOverride
в классе RibbonTabsContainer
. Это привело к тому, что сгруппированные вкладки отображались раньше, чем вкладки, не входящие в группу:
/// <summary>
/// Positions child elements and determines
/// a size for the control
/// </summary>
/// <param name="finalSize">The final area within the parent
/// that this element should use to arrange
/// itself and its children</param>
/// <returns>The actual size used</returns>
protected override Size ArrangeOverride(Size finalSize)
{
var finalRect = new Rect(finalSize)
{
X = -this.HorizontalOffset
};
var orderedChildren = this.InternalChildren.OfType<RibbonTabItem>()
.OrderByDescending(x => x.Group != null); // <==== originally .OrderBy
foreach (var item in orderedChildren)
{
finalRect.Width = item.DesiredSize.Width;
finalRect.Height = Math.Max(finalSize.Height, item.DesiredSize.Height);
item.Arrange(finalRect);
finalRect.X += item.DesiredSize.Width;
}
var ribbonTabItemsWithGroups = this.InternalChildren.OfType<RibbonTabItem>()
.Where(item => item.Group != null);
var ribbonTitleBar = ribbonTabItemsWithGroups.Select(ribbonTabItemsWithGroup => ribbonTabItemsWithGroup.Group.Parent)
.OfType<RibbonTitleBar>()
.FirstOrDefault();
if (ribbonTitleBar != null)
{
ribbonTitleBar.InvalidateMeasure();
}
return finalSize;
}
person
redtetrahedron
schedule
23.05.2013