После my first question, я остался со следующим XAML:Как создать пользовательский заголовок TabItem в триггере стиля?
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl>
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border BorderBrush="Transparent" Background="Transparent">
<ContentPresenter x:Name="TabItemContent" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header" Margin="12,2,12,2" RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="TextElement.Foreground" Value="DarkOrange" TargetName="TabItemContent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="First"/>
<TextBlock Text="Tab"/>
</StackPanel>
</TabItem.Header>
<TextBlock Text="TextBlock"/>
</TabItem>
<TabItem Header="TAB2">
<TextBlock Text="TextBlock too"/>
</TabItem>
</TabControl>
</Grid>
</Window>
Моделирование хорошо работает на второй вкладке (которая имеет простой заголовок), но не для первого (с «комплексом ').
Есть ли способ обойти это поведение? Я не могу думать о себе; Я попытался заменить «TextElement» на «TabItem» без успеха.
EDIT: удалены несоответствующие части XAML.
Это действительно работает, но это явно не удовлетворяет меня. Это хак-иш. И что, если мне пришлось использовать фактический заголовок в стиле? – Kilazur
Что вы имеете в виду под заголовком «HeaderTemplate в стиле»? Но это правда, если вы, как автор контроля, не контролируете то, что помещено в заголовок/шаблон, то это не лучшее решение. Проблема здесь в том, что TabItem является логическим родителем для сложного заголовка и сложного содержимого. Таким образом, еще одним решением было бы установить Foreground явно в пользовательском интерфейсе в Content TabItem и установить Foreground для TabItem в триггере. –
Да, это, скорее всего, лучшее решение здесь, пока не будет доказано обратное ... Спасибо – Kilazur