自定义UWP TimePicker(Flyout)的样式

时间:2018-05-21 08:54:26

标签: c# wpf uwp

我试图通过将TimePicker属性设置为ClockIdentifier来误用24HourClock控件作为时间跨度选择器(24小时范围非常适合我的需要)。

唯一的问题是,如果没有Flyout上的标题,我认为第一列是小时而第二列是分钟,我认为用户界面不够清晰。

我已成功自定义TimePickerFlyoutPresenter,方法是将自定义样式添加到Application的{​​{1}} / Application.Resources / ResourceDictionary元素中,但这适用于显示的每个App.xaml。我并不总是滥用TimePickerFlyoutPresenter控件,所以我试图找到一种方法可以选择性地应用此模板。

如何选择使用此模板,而不是将其应用于TimePicker显示的每个TimePickerFlyoutPresenter?我在代码中创建TimePicker类,而不是XAML,以防它产生影响。

1 个答案:

答案 0 :(得分:0)

TimePickerFlyoutPresenter用于后面的TimePicker代码中。您在TimePickerFlyoutPresenter xaml代码中找不到关于TimePicker的任何关键字。如果您在TimePickerFlyoutPresenter中自定义Application.Resources样式,则它将是全局的。我并不认为将工具提示放在TimePickerFlyoutPresenter中是一种很好的做法。此设计可能无法在第一时间向用户提供最直接的信息。我建议您可以将工具提示放在HeaderTemplate

<DataTemplate x:Key="TimerDateTemplate">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <TextBlock TextAlignment="Center" Text="Hour" FontSize="13"/>
        <TextBlock Grid.Column="1" TextAlignment="Center" Text="minute" FontSize="13"/>
    </Grid>
</DataTemplate>

<强>用法

<TimePicker ClockIdentifier="24HourClock" HeaderTemplate="{StaticResource TimerDateTemplate}">

enter image description here