【问题标题】:TimePicker C# XAML UWP Width CustomizationTimePicker C# XAML UWP 宽度自定义
【发布时间】:2023-03-06 08:15:01
【问题描述】:

我正在尝试自定义 TimePicker 控件宽度,但没有取得太大成功。它有 HH 和 MM,但问题是它们中的每一个使用的空间比保存像“22”这样的数字实际需要的空间多 2 到 3 倍。

有人知道如何自定义吗?我想我可能必须更改 MinWidth 或 Padding。

谢谢!

更新

经过测试,我看到我需要定义例如样式树底部的 Grid MinWidth=10 和 MaxWidth=150 如下所示。问题是在那之后,还有许多其他的定义。知道是否有捷径可以在不复制整个 generic.xaml 的情况下进行更改?

        <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 TimePickerButtonForeground}" />
            <Setter Property="HorizontalAlignment" Value="Left" />
            <Setter Property="VerticalAlignment" Value="Center" />
            <Setter Property="UseSystemFocusVisuals" Value="{ThemeResource IsApplicationFocusVisualKindReveal}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TimePicker">
                        <Grid x:Name="LayoutRoot" Margin="{TemplateBinding Padding}">
                            <Grid.Resources>
                                <Style x:Key="TimePickerFlyoutButtonStyle" TargetType="Button">
                                    <Setter Property="UseSystemFocusVisuals" Value="False" />
                                    <Setter Property="ElementSoundMode" Value="FocusOnly" />
                                    <Setter Property="Template">
                                        <Setter.Value>
                                            <ControlTemplate TargetType="Button">
                                                <Grid Background="{TemplateBinding Background}" MinWidth="10" MaxWidth="150">

【问题讨论】:

  • 探索和确定正确答案,我强烈建议您使用Snoop。您可以选择您的应用程序窗口并使用类似 Shift 键单击您的组件来直接检查 WPF 组件树及其属性。然后,您可以试验以确定应根据需要“设置样式”的确切目标和属性。
  • @NicoZhu-MSFT 号

标签: c# xaml uwp timepicker


【解决方案1】:

你的想象是正确的,你可以像下面这样编辑TimePickerMinWidth属性值,默认是242

 <TimePicker MinWidth="100" x:Name="MyPicker" ClockIdentifier="24HourClock" />

更新

恐怕你不能编辑 12HourClock 样式,因为 TimePicker 会在后面的代码中编辑样式以隐藏 am pm 指示器。所以你想编辑小时列,你需要将ClockIdentifier设置为12HourClock,并将FirstTextBlockColumn max设置为你想要的值。

<ColumnDefinition Width="*" x:Name="FirstTextBlockColumn" MaxWidth="20"/>

【讨论】:

  • 这将为完全控制设置 MinWidth。我的问题在于单个项目容器,例如小时、分钟大小。看图。
  • 是的,我想这个。我尝试了一些东西,样式,模板,但到目前为止还没有找到确切的方法。
  • 可以分享一张你想要实现的图片吗?
  • 你能在我的帖子上看到上面的图片吗?在其中一个选择器中有“22”,而在另一个选择器中有“00”。例如,您可以看到写“22”的字段非常宽,以至于我可以写“2222222222”。我只想缩小它(宽度)以免浪费所有空间。
  • 你用过哪种风格?
猜你喜欢
  • 1970-01-01
  • 2019-05-09
  • 2021-09-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多