Em WPF, como posso fazer ToolBar.Header desaparecer?
Pergunta
Eu li em dois livros diferentes que em WPF, a propriedade ToolBar.Header não faz nada:
- Windows Presentation Foundation desencadeada por Adam Nathan, pg. 119
- WPF Pro com VB 2008, pg. 650
No entanto, eu estou criando minha barra de ferramentas objetos dinamicamente como este (tbtToolBar é realmente um ToolBarTray definido no XAML, vm é ViewModel da janela):
foreach (IToolBarViewModel toolBarViewModel in vm.ToolBars)
{
ToolBar toolBar = new ToolBar();
toolBar.DataContext = toolBarViewModel;
// Bind the Header Property
Binding headerBinding = new Binding("Header");
toolBar.SetBinding(ToolBar.HeaderProperty, headerBinding);
// Bind the Items Property
Binding itemsBinding = new Binding("Items");
toolBar.SetBinding(ToolBar.ItemsSourceProperty, itemsBinding);
tbtToolBar.ToolBars.Add(toolBar);
}
E a propriedade de cabeçalho mostra claramente em uma etiqueta como o primeiro item na barra de ferramentas. Este não é o comportamento que eu quero. Eu gostaria de usar o cabeçalho como um título em uma lista drop-down da barra de ferramentas quando os cliques direito de usuário no ToolBarTray, assim como os livros descrevem.
Então, eu tentei me livrar do cabeçalho, definindo:
toolBar.HeaderTemplate = new DataTemplate();
Isso funciona, mas agora há uma pequena diferença feio na barra de ferramentas.
- Existe uma maneira de fazer o cabeçalho invisível sem a lacuna?
- Por que os livros claramente errado? Fez algo mudar entre então e agora?
Solução
A única maneira que eu era capaz de fazer este trabalho era manter o Header propriedade null, e criar uma outra propriedade no ToolBarViewModel chamado Name.