RibbonApplicationMenu: como se livrar do Painel Auxiliar
Aconteceu que o aplicativo em que estou trabalhando não funciona em documentos, portanto não há necessidade de exibir a lista de documentos abertos recentemente no menu do aplicativ
Mas - irritantemente - não há propriedades prontamente disponíveis noRibbonApplicationMenu
class para ocultar o @ não utilizaAuxiliaryPane
(para o qual, curiosamente, a propriedade existe, mas é marcada como "interna").
Claro, eu posso simplesmente deixar lá - mas isso é ... desarrumado.
ntão, aqui está a solução que eu crie
Espero que seja útil para mais alguém: -)
A idéia geral é subclassificar oRibbonApplicationMenu
, localize o filho do modelo correspondente ao pop-up do menu e substitua seuWidth
(após várias experiências frustrantes, tornou-se evidente que fazer isso nem porPART_AuxiliaryPaneContentPresenter
nem paraPART_FooterPaneContentPresenter
- nem para os dois - poderia conseguir qualquer coisa
Bem, sem mais delongas, aqui está o código:
public class SlimRibbonApplicationMenu : RibbonApplicationMenu
{
private const double DefaultPopupWidth = 180;
public double PopupWidth
{
get { return (double)GetValue(PopupWidthProperty); }
set { SetValue(PopupWidthProperty, value); }
}
public static readonly DependencyProperty PopupWidthProperty =
DependencyProperty.Register("PopupWidth", typeof(double),
typeof(SlimRibbonApplicationMenu), new UIPropertyMetadata(DefaultPopupWidth));
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.DropDownOpened +=
new System.EventHandler(SlimRibbonApplicationMenu_DropDownOpened);
}
void SlimRibbonApplicationMenu_DropDownOpened(object sender, System.EventArgs e)
{
DependencyObject popupObj = base.GetTemplateChild("PART_Popup");
Popup popupPanel = (Popup)popupObj;
popupPanel.Width = (double)GetValue(PopupWidthProperty);
}
}
omo observação, tentei encontrar uma maneira de resolver a largura desejada com base na largura máxima dos itens do ApplicationMenu (em vez de defini-la explicitamente através do DependencyProperty no XAML) - mas sem sucess
Dou meu desprezo aos "números mágicos", qualquer sugestão sobrenaquel será profundamente apreciado.