Единственный способ свести к минимуму элемент управления и не может быть отключен - это двойной щелчок по заголовку вкладки, фактически, тройной щелчок или более 2 нажатий также сводит к минимуму элемент управления, поэтому моя первая идея провалилась (я попробовалотменить событие двойного щелчка, но элемент управления свернут при третьем щелчке).
ТАК, это решение не слишком красивое, но оно работает нормально, когда на TabHeaderItemsControl
обнаружено более двух нажатий (этоэто элемент управления, который содержит вкладки), то элемент управления максимизируется
public class MinimizableRibbon : Ribbon
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
RibbonTabHeaderItemsControl tabItems = this.FindName("TabHeaderItemsControl") as RibbonTabHeaderItemsControl;
int lastClickTime = 0;
if (tabItems != null)
tabItems.PreviewMouseDown += (_, e) =>
{
// A continuous click was made (>= 2 clicks minimizes the control)
if (Environment.TickCount - lastClickTime < 300)
// here the control should be minimized
if (!IsMinimizable)
IsMinimized = false;
lastClickTime=Environment.TickCount;
};
}
public bool IsMinimizable { get; set; }
}