В WPF, как я могу сделать так, чтобы ToolBar.Header исчезал? - PullRequest
0 голосов
/ 18 мая 2009

Я читал в двух разных книгах, что в WPF свойство ToolBar.Header ничего не делает:

Однако я создаю свои объекты ToolBar динамически, как это (tbtToolBar на самом деле является ToolBarTray, определенным в Xaml, vm - это ViewModel окна):

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);
}

И свойство Header четко отображается в метке в качестве первого элемента на панели инструментов. Это не то поведение, которое я хочу. Я хотел бы использовать заголовок в качестве заголовка в раскрывающемся списке панелей инструментов, когда пользователь щелкает правой кнопкой мыши на панели инструментов, как описано в книгах.

Итак, я попытался избавиться от заголовка, установив:

toolBar.HeaderTemplate = new DataTemplate();

Это работает, но теперь на панели инструментов есть небольшой неприглядный пробел.

  1. Есть ли способ сделать заголовок невидимым без пробела?
  2. Почему книги явно не правы? Что-то изменилось между тогда и сейчас?

1 Ответ

0 голосов
/ 19 мая 2009

Единственным способом, которым я смог выполнить эту работу, было оставить свойство Header пустым и создать другое свойство в ToolBarViewModel с именем Name.

...