WPF DatePicker 的奇怪外观

Posted

技术标签:

【中文标题】WPF DatePicker 的奇怪外观【英文标题】:Strange appearance of WPF DatePicker 【发布时间】:2013-07-07 15:54:07 【问题描述】:

在 .NET 4.0 上的 WPF 应用程序中,我在水平的 StackPanel 中使用了两个 DatePickers 和两个 TextBlocks,它看起来像这样:

在左侧DatePicker,我尝试了更大的字体大小。除此之外,没有特殊的设置或样式。

按钮与TextBlocks 对齐,但DatePicker 中的文本不是。

知道如何更改日期文本的对齐方式吗?

编辑:这是我的 XAML:

    <StackPanel Orientation="Horizontal"
                HorizontalAlignment="Right" VerticalAlignment="Bottom"
                >
        <TextBlock Text="from " />
        <DatePicker SelectedDate="Binding FromDate, Mode=TwoWay" FontSize="14" />
        <TextBlock Text=" until " />
        <DatePicker SelectedDate="Binding ToDate, Mode=TwoWay" />
    </StackPanel>

【问题讨论】:

你能发布你的 xaml。 【参考方案1】:

感谢 Jorge,这是 App.xaml 中的 Button 样式:

    <Style TargetType="x:Type Button">
        <Setter Property="Margin" Value="0 5 10 5" />
    </Style>

这种样式也适用于DatePicker 内部的按钮。

【讨论】:

【参考方案2】:

假设您正在使用文本块,那么您可以尝试这样的事情。

    <StackPanel Orientation="Horizontal" Height="40" Margin="10">
        <Border Background="Transparent" BorderBrush="#FF2A2A89" BorderThickness="2">
        <TextBlock Width="150" Text="Testing" TextAlignment="Center"
                   VerticalAlignment="Center" />
        </Border>
        <DatePicker VerticalContentAlignment="Center" Name="datepicker" />
    </StackPanel>

内容真的只是为了演示。你应该得到这样的东西:

但是,如果您只是显示日期,为什么不使用默认设置的日期选择器呢?默认显示选择的日期。

另一种方法是,您可以使用文本框而不是文本块并将 IsReadOnly 设置为 真的。我假设您正在使用文本块,因此它们不可编辑。使用文本框,您可以设置 VerticalContentAlignment="Center" 就是这样。

【讨论】:

谢谢,我尝试了您关于VerticalContentAlignment="Center" 的建议,但这也无济于事。文本仍然未对齐。是的,我正在使用TextBlocks(见我帖子的第一句话) 我看不出是什么原因造成的。在日期选择器上设置 VerticalContentAlignment 对我有用。 xaml 代码中可能还有其他内容。设置它背后的代码是否有任何属性?该堆栈面板在任何容器内?

以上是关于WPF DatePicker 的奇怪外观的主要内容,如果未能解决你的问题,请参考以下文章

WPF DatePicker IsEnabled 属性不改变外观

是否存在 WPF .NET 3.0 日期选择器?

WPF DatePicker Watermark 使用错误的语言,但日期格式正确

JQuery DatePicker 只读

JQuery Datepicker - 没有默认日期

Nativescript Datepicker 更改文本颜色