Вопрос по binding, tabcontrol, tabitem, header, wpf – TabControl.ItemTemplate: установите для TabItem.Header.Text значение MultiBinding с помощью StringFormat.

23

Как установить TabItem.Header для привязок, взятых из нескольких полей, каждая привязка показана в другом размере, все вместо исходного текста заголовка; без переопределения стиля по умолчанию и поведения заголовка - мне нужен только текст.

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

мы пробовали следующее:


    
         
             
                 
                     
                         
                         
                     
                 
                 
                     
                         Here is what is gonna be in the TabItem - not header
                     
                 
             
         
    

Но это неничего не показывать.

Мы также пытались установить HeaderTemplate на DataTemplate, но в результате DataTemplate переопределяет стиль TabItem, и когда я щелкаю текст, он не 'Если перейти к нажатой вкладке, то, кроме того, невыбранные вкладки выглядят очень забавно, я вижу плавающий прямоугольник текста, в то время как я хочу, чтобы он был прозрачным.

Итак, подведем итог моего вопросаЯ хочу установить TabItem.Header.Text для MultiBinding с StringFormat.

Почему вы удалили предыдущую версию этого вопроса? Почему бы просто не изменить то, что вы спрашиваете, и оставить комментарии на этот счет, тогда вы дадите ответам знать, что они не попали в цель, стихотворный разбор там работает? Simeon Pilgrim
Я дал почти такой же ответ на этот вопрос несколько часов назад. Но, кажется, вопрос был удален и повторно размещен? Dabblernl

Ваш Ответ

1   ответ
62

TabControl содержит свойство ContentTemplate, а также ItemTemplate, которое он наследует от ItemsControl. Он использует ContentTemplate для различения того, что отображается в области содержимого, а ItemTemplate, который определяет шаблон для заголовка. Кроме того, каждый элемент из вашего ItemSource будет автоматически помещен в элемент TabItem; это неНе нужно заново создавать его в ItemTemplate, так как он попытается поместить TabItem внутри заголовка, как вы заметили.

Вместо повторного создания TabItem внутри ItemTemplate, используйте ItemTemplate для определения содержимого вашего заголовка и ContentTemplate для определения вашего содержимого.


    
        
            
                
                    
                        
                        
                    
                
            
        
    
    
        
            
        
    

В первом абзаце вы упомянули о желании установить разные размеры на связанных частях заголовка. Если вы хотите сделать это, вы выигралине будет возможности использовать одну Binding или MultiBinding для установки текста, как это было сделано выше. Вместо этого вы можете вложить TextBlocks для достижения этого с различным форматированием для каждого.


    
        
            
            
            
        
    

Каковы стили TargetTypes для них? Я знаю, что TabItem для кнопки, но как насчет страницы? Patrick
Это было действительно очень сложно решить. +1 Afzaal Ahmad Zeeshan

Похожие вопросы