如何自定义TimePicker的样式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何自定义TimePicker的样式相关的知识,希望对你有一定的参考价值。

本主题介绍 TimePicker 控件的样式和模板。 你可以修改这些资源和默认 ControlTemplate 以便为该控件提供一个唯一的外观。
视觉状态
TimePicker 默认样式不定义任何视觉状态。
主题资源
这些资源在该控件的默认样式中使用。
深色主题画笔
若要在深色主题下更改该控件的颜色,请在 App.xaml 中替代这些画笔。
XAML
<SolidColorBrush x:Key="TimePickerHeaderForegroundThemeBrush" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="TimePickerForegroundThemeBrush" Color="#FF000000" />

浅色主题画笔
若要在浅色主题下更改该控件的颜色,请在 App.xaml 中替代这些画笔。
XAML
<SolidColorBrush x:Key="TimePickerHeaderForegroundThemeBrush" Color="#FF000000" />
<SolidColorBrush x:Key="TimePickerForegroundThemeBrush" Color="#FF000000" />

其他资源
XAML
<x:Double x:Key="TimePickerSelectorThemeMinWidth">80</x:Double>
<Thickness x:Key="TimePickerHeaderThemeMargin">0,0,0,6</Thickness>
<Thickness x:Key="TimePickerFirstHostThemeMargin">0,0,20,0</Thickness>
<Thickness x:Key="TimePickerThirdHostThemeMargin">20,0,0,0</Thickness>
<FontWeight x:Key="TimePickerHeaderThemeFontWeight">SemiLight</FontWeight>

共享资源
该控件模板使用这些与其他控件模板共享的资源。更改这些值将影响使用这些资源的其他控件。
XAML

<FontFamily x:Key="ContentControlThemeFontFamily">Segoe UI</FontFamily>
<x:Double x:Key="ControlContentThemeFontSize">14.667</x:Double>

有关主题资源的详细信息,包括用于 HighContrast 主题的值,请参阅 XAML 主题资源引用。
默认样式
XAML
<!-- Default style for Windows.UI.Xaml.Controls.TimePicker -->
<Style TargetType="TimePicker">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="FontFamily" Value="ThemeResource ContentControlThemeFontFamily" />
<Setter Property="FontSize" Value="ThemeResource ControlContentThemeFontSize" />
<Setter Property="Foreground" Value="ThemeResource TimePickerForegroundThemeBrush"/>
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TimePicker">
<Border x:Name="LayoutRoot"
Background="TemplateBinding Background"
BorderBrush="TemplateBinding BorderBrush"
BorderThickness="TemplateBinding BorderThickness">
<Grid Margin="TemplateBinding Padding">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentPresenter x:Name="HeaderContentPresenter"
Foreground="ThemeResource TimePickerHeaderForegroundThemeBrush"
Margin="ThemeResource TimePickerHeaderThemeMargin"
FlowDirection="TemplateBinding FlowDirection"
Content="TemplateBinding Header"
ContentTemplate="TemplateBinding HeaderTemplate"
FontWeight="ThemeResource TimePickerHeaderThemeFontWeight" />
<StackPanel Grid.Row="1" Orientation="Horizontal">
<Border x:Name="FirstPickerHost" Margin="ThemeResource TimePickerFirstHostThemeMargin">
<ComboBox x:Name="HourPicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
<Border x:Name="SecondPickerHost">
<ComboBox x:Name="MinutePicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
<Border x:Name="ThirdPickerHost" Margin="ThemeResource TimePickerThirdHostThemeMargin">
<ComboBox x:Name="PeriodPicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
</StackPanel>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
参考技术A 本主题介绍 TimePicker 控件的样式和模板。 你可以修改这些资源和默认 ControlTemplate 以便为该控件提供一个唯一的外观。
视觉状态
TimePicker 默认样式不定义任何视觉状态。
主题资源
这些资源在该控件的默认样式中使用。
深色主题画笔
若要在深色主题下更改该控件的颜色,请在 App.xaml 中替代这些画笔。
XAML
<SolidColorBrush x:Key="TimePickerHeaderForegroundThemeBrush" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="TimePickerForegroundThemeBrush" Color="#FF000000" />

浅色主题画笔
若要在浅色主题下更改该控件的颜色,请在 App.xaml 中替代这些画笔。
XAML
<SolidColorBrush x:Key="TimePickerHeaderForegroundThemeBrush" Color="#FF000000" />
<SolidColorBrush x:Key="TimePickerForegroundThemeBrush" Color="#FF000000" />

其他资源
XAML
<x:Double x:Key="TimePickerSelectorThemeMinWidth">80</x:Double>
<Thickness x:Key="TimePickerHeaderThemeMargin">0,0,0,6</Thickness>
<Thickness x:Key="TimePickerFirstHostThemeMargin">0,0,20,0</Thickness>
<Thickness x:Key="TimePickerThirdHostThemeMargin">20,0,0,0</Thickness>
<FontWeight x:Key="TimePickerHeaderThemeFontWeight">SemiLight</FontWeight>

共享资源
该控件模板使用这些与其他控件模板共享的资源。更改这些值将影响使用这些资源的其他控件。
XAML

<FontFamily x:Key="ContentControlThemeFontFamily">Segoe UI</FontFamily>
<x:Double x:Key="ControlContentThemeFontSize">14.667</x:Double>

有关主题资源的详细信息,包括用于 HighContrast 主题的值,请参阅 XAML 主题资源引用。
默认样式
XAML
<!-- Default style for Windows.UI.Xaml.Controls.TimePicker -->
<Style TargetType="TimePicker">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="FontFamily" Value="ThemeResource ContentControlThemeFontFamily" />
<Setter Property="FontSize" Value="ThemeResource ControlContentThemeFontSize" />
<Setter Property="Foreground" Value="ThemeResource TimePickerForegroundThemeBrush"/>
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TimePicker">
<Border x:Name="LayoutRoot"
Background="TemplateBinding Background"
BorderBrush="TemplateBinding BorderBrush"
BorderThickness="TemplateBinding BorderThickness">
<Grid Margin="TemplateBinding Padding">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentPresenter x:Name="HeaderContentPresenter"
Foreground="ThemeResource TimePickerHeaderForegroundThemeBrush"
Margin="ThemeResource TimePickerHeaderThemeMargin"
FlowDirection="TemplateBinding FlowDirection"
Content="TemplateBinding Header"
ContentTemplate="TemplateBinding HeaderTemplate"
FontWeight="ThemeResource TimePickerHeaderThemeFontWeight" />
<StackPanel Grid.Row="1" Orientation="Horizontal">
<Border x:Name="FirstPickerHost" Margin="ThemeResource TimePickerFirstHostThemeMargin">
<ComboBox x:Name="HourPicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
<Border x:Name="SecondPickerHost">
<ComboBox x:Name="MinutePicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
<Border x:Name="ThirdPickerHost" Margin="ThemeResource TimePickerThirdHostThemeMargin">
<ComboBox x:Name="PeriodPicker"
MinWidth="ThemeResource TimePickerSelectorThemeMinWidth"
FontWeight="TemplateBinding FontWeight"
FontSize="TemplateBinding FontSize"
FontFamily="TemplateBinding FontFamily"
Foreground="TemplateBinding Foreground"/>
</Border>
</StackPanel>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

以上是关于如何自定义TimePicker的样式的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义TimePicker的样式

我可以自定义 Android 默认提供的 TimePicker 或 DatePicker 吗?

Android——一个简单的闹钟APP

Android 6.0 中TimePicker显示为滚动样式的方法

android timepicker 可以显示秒数吗

Android - 新的日历样式 DatePicker 和 TimePicker