【发布时间】:2016-05-24 18:38:47
【问题描述】:
我正在尝试为 TabControl 创建一种样式以实现 2 个目标:
- 以不同的背景颜色和粗体显示选定的 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?
-
是的,我确定,我在提问的同时做了截图。按照接受的答案中的建议使用 ItemTemplate 解决了这个问题。谢谢。
标签: wpf mvvm string-formatting tabitem