WPF TabControl ControlTemplate - PullRequest
       15

WPF TabControl ControlTemplate

1 голос
/ 21 января 2010

Я хочу создать новый шаблон элемента управления для WPF tabcontrol.

Ситуация, с которой я столкнулся, состоит в том, что в элементе управления будет несколько вкладок, и пользователь сможет добавлять и удалять эти вкладки.

В идеале я хотел бы создать что-то в соответствии с вкладками Firefox / IE, чтобы у вас была кнопка удаления внутри заголовка вкладки, чтобы удалить текущую вкладку.

Кроме того, и немного сложнее, я хочу иметь новую кнопку вкладки, которая всегда находится справа от последней вкладки в tabcontrol.

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

Спасибо.

Ответы [ 4 ]

4 голосов
/ 21 января 2010

В этой статье (относится к MVVM) автор использует шаблоны элементов управления для оформления вкладок с помощью кнопки закрытия и др.

alt text

Или вы можете пойти более простым с этим образцом

alt text

1 голос
/ 17 января 2011

Попробуйте следующие статьи; они оба помогли мне начать писать пользовательский элемент управления вкладками.

1. Код проекта: расширенный элемент управления вкладками

2. WPF TabControl Series

Первая ссылка предоставляет полностью настраиваемое решение, которое действительно хорошо, но сначала я нашел его немного устрашающим. Вторая ссылка содержит статью из 4-х частей, в которой рассказывается о повторном шаблоне элемента управления вкладками.

1 голос
/ 21 января 2010

Кнопка «Новая вкладка» более сложная. Основная проблема заключается в том, что вы хотите, чтобы он отображался в правильном месте в ItemsPresenter / TabPanel, но он не является частью коллекции, управляющей ItemsPresenter, потому что на самом деле он не является TabItem. Я делал это в прошлом, изменив ControlTemplate самого TabControl так, чтобы он прикреплял кнопку к правой стороне ItemsPresenter, но вы можете получить странный вид в ситуациях, когда вкладки сталкиваются со второй строкой, поскольку кнопка не является частью макета TabPanel.

0 голосов
/ 22 марта 2010

Как насчет использования TemplateSelector?

Создайте два разных шаблона - один для ваших обычных элементов вкладки и один для вашей «кнопки новой вкладки». Оба они на самом деле являются элементами вкладок, но с разными шаблонами в зависимости от условий в TemplateSelector.

Чтобы добиться другого поведения / идентифицировать свою «кнопку новой вкладки», просто проверьте в своем коде, какой шаблон назначен.

Надеюсь, это немного поможет.

...