c# - TimePicker C# XAML UWP 宽度自定义
问题描述
我正在尝试自定义 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">
解决方案
您的想象是正确的,您可以TimePicker
MinWidth
像下面这样编辑属性值,默认值为242
.
<TimePicker MinWidth="100" x:Name="MyPicker" ClockIdentifier="24HourClock" />
更新
恐怕你不能编辑 12HourClock 样式,因为 TimePicker 会在后面的代码中编辑样式以隐藏 am pm 指示器。所以你想编辑小时列,你需要设置 ClockIdentifier
为12HourClock
,并设置FirstTextBlockColumn
最大值为你想要的值。
<ColumnDefinition Width="*" x:Name="FirstTextBlockColumn" MaxWidth="20"/>
推荐阅读
- r - r中25个变量之间的相关性
- python - Django Rest 框架和@staticmethod。它有什么好处?
- javascript - Express (Node) - 通过中间件循环发送错误消息的正确方法
- delphi - 如何在 Delphi 中知道 TForm 中的最大字幕长度
- angularjs - 如何在我的 angularjs 代码中解决这个错误
- android - 在理解此 ANR 报告时需要帮助
- android - 列表项上的 Android Swipe 菜单无法处理父宽度更改
- node.js - 如何使用 Electron 的内置 Node 实例来运行任务?
- r - 防止 renderUI 更新所有输入
- php - 只有第一列被回显,而不是全部