Pergunta

Eu li em dois livros diferentes que em WPF, a propriedade ToolBar.Header não faz nada:

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.

  1. Existe uma maneira de fazer o cabeçalho invisível sem a lacuna?
  2. Por que os livros claramente errado? Fez algo mudar entre então e agora?
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top