【发布时间】: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