2013-03-08 2 views
1

В выпуске Fluent Ribbon Control Suite есть способ, чтобы контекстные группы вкладок отображались сначала, а не последние? Я использовал более старую сборку и имел контекстную группу вкладок для первых трех элементов табуляции, а еще два - без группы. Загружен и построен новейший источник; вкладки в группе теперь находятся на правом конце. Я хочу, чтобы они показывались в том же порядке, что и я, указанный в xaml. Я не вижу никаких очевидных свойств, которые позволили бы мне указать порядок.Свободная лента: укажите положение контекстных групп вкладок?

ответ

0

Поскольку никто не отвечал на это, и я просто получил значок Tumbleweed для него :), я решил опубликовать свое решение, которое должно было изменить код Fluent Ribbon Control Suite. Я модифицировал ArrangeOverride в классе RibbonTabsContainer. Это привело к тому, что вкладки Grouped были отображены до тех, которые не представлены в группе:

 /// <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; 
     } 
Смежные вопросы