Fluent リボン コントロール スイートで、コンテキスト タブ グループを最後ではなく最初に表示する方法はありますか? 私は古いビルドを使用していて、最初の 3 つのタブ項目にコンテキスト タブ グループがあり、さらに 2 つのグループにはグループがありませんでした。最新のソースをダウンロードしてビルドしました。グループ内のタブは右端にあります。xamlで指定したのと同じ順序で表示したい。順序を指定できる明白なプロパティはありません。
質問する
641 次
1 に答える
0
誰もこれに対する答えを持っていなかったので、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;
}
于 2013-05-23T21:21:08.913 に答える