Я пытаюсь создать стиль для TabControl для достижения 2 целей:WPF TabItem формат дата
- Показать выбранный TabItem с другим цветом фона и выделены жирным шрифтом.
- Отформатируйте текст заголовка вкладки, привязанный к дате в модели представления, до часов и минут, например «15:45».
Мне почти удалось, но текст заголовка также отображает часть даты. Кроме того, он отображает 03:45 вместо 15:45.
Вот код XAML Я использую:
<TabControl ItemsSource="{Binding MC}" >
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Background" Value="#01535F" />
<Setter Property="Foreground" Value="Azure" />
<Setter Property="FontSize" Value="16" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Black" Margin="1,1">
<Grid Name="Panel">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
/>
<!--<HeaderedContentControl Header="{Binding Path=MarketStartTime, StringFormat={}{0:HH:mm}}" />-->
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
<Setter TargetName="Panel" Property="Background" Value="#003F44" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Panel" Property="Background" Value="#01535F" />
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<HeaderedContentControl Header="{Binding Path=MarketStartTime, StringFormat={}{0:HH:mm}}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
</TabControl>
Заранее спасибо за любую помощь.
«HH» * - это строка формата для 24-часовых часов, так что вы уверены, что ваше время 15:45, а не на самом деле 3:45? – ChrisF
Да, я был уверен, я сделал снимок экрана в то же время, когда задал вопрос. Использование ItemTemplate, как предложено в принятом ответе, устраняет эту проблему. Спасибо. –