WPF中DatePicker文本框内文字无法居中对齐的问题求助
WPF中DatePicker文本框内文字无法居中对齐的问题求助
嘿,我太懂你这种卡壳的感觉了!你用WPF做DatePicker的时候,文本框里的提示文字和选中的日期都没法居中,对吧?看了你贴的代码,问题出在DatePickerTextBox的默认模板上——它内部的文本容器默认不是居中布局的,光瞎调外面的属性根本没用。
给你个直接能用的修改方案,你把原来的DatePickerTextBox的Style改成下面这样就行:
<DatePicker x:Name="DatePicker1" Margin="0,128,0,0" SelectedDateFormat="Long" HorizontalAlignment="Center" VerticalAlignment="Top" Height="30" Width="250" FontFamily="Calibri" FontSize="16" FontWeight="Regular" TabIndex="1" BorderBrush="#162D2D" Foreground="#D9D9D9" Padding="0,0,0,0"> <DatePicker.Resources> <Style TargetType="{x:Type DatePickerTextBox}"> <Setter Property="Text" Value="Select Buy Date"/> <Setter Property="Padding" Value="0,2,0,0"/> <Setter Property="Background" Value="#FF162D2D"/> <!-- 强制文本本身居中对齐 --> <Setter Property="TextAlignment" Value="Center"/> <!-- 重写模板,让内部的文本容器也居中 --> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DatePickerTextBox}"> <Grid> <Border x:Name="PART_ContentHost" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/> <ScrollViewer x:Name="PART_TextBox" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="{TemplateBinding Padding}"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </DatePicker.Resources> </DatePicker>
我给你拆解下关键改动:
- 新增了
TextAlignment="Center"的Setter,直接让文本内容本身居中; - 重写了DatePickerTextBox的ControlTemplate,把内部承载文本的ScrollViewer设置为水平垂直居中,这样不管是默认的提示文字,还是你选中后的日期,都会乖乖待在文本框中间了。
对了,你原来代码里的Background值#FF162D...没写完,我给补成了#FF162D2D,你可以根据自己的需求改成对应的颜色哈。
备注:内容来源于stack exchange,提问作者Athang Tikekar
相关产品推荐
相关产品推荐

