Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF选项卡项格式日期_Wpf_Mvvm_String Formatting_Tabitem - Fatal编程技术网

WPF选项卡项格式日期

WPF选项卡项格式日期,wpf,mvvm,string-formatting,tabitem,Wpf,Mvvm,String Formatting,Tabitem,我正在尝试为TabControl创建一种样式,以实现两个目标: 以不同的背景色和粗体显示选定的选项卡项 将绑定到视图模型中日期的选项卡标题文本格式化为小时和分钟,如“15:45” 我几乎成功了,但是标题文本也显示了日期部分。 此外,它显示的是03:45而不是15:45 以下是我正在使用的XAML代码: <TabControl ItemsSource="{Binding MC}" > <TabControl.Resources>

我正在尝试为TabControl创建一种样式,以实现两个目标:

  • 以不同的背景色和粗体显示选定的选项卡项
  • 将绑定到视图模型中日期的选项卡标题文本格式化为小时和分钟,如“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>
    
    
    

    提前感谢您的帮助。

    我想这就是您想要的:

    <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" />
                                </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>
            </Style>
        </TabControl.Resources>
    
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=MarketStartTime, StringFormat={}{0:HH:mm}}"></TextBlock>
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>
    
    
    

    ItemTemplate
    用于标题区域,
    ContentTemplate
    用于内容区域中显示的内容。
    ContentTemplate
    中的
    ContentPresenter
    将实例化
    ItemTemplate
    中的控件。“HH”是24小时时钟的格式字符串,因此你确定你的时间是15:45而不是3:45吗?是的,我确定,我在问问题的同时做了屏幕截图。使用已接受答案中建议的ItemTemplate修复了此问题。谢谢。我还有两个问题,我对用于标题内容的控件模板有点困惑。我想在选项卡标题中添加一个填充,这样文本就不会太靠近边框,并使用列表框为选项卡内容创建一个数据模板。我不明白将这2个更改的XAML代码放在哪里。