WPF的日期格式问题

问题描述 投票:-1回答:2

在我的wpf应用程序中,我使用了DatePicker控件。我遇到了DatePicker控件格式的问题。它不采用我指定的形式,而是采用默认的系统格式。我在我的应用程序启动文件中设置了日期时间格式,如下所示,

 string currentCulture = AppSettings.Locale;
        CultureInfo ci = new System.Globalization.CultureInfo(currentCulture);
        ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        Thread.CurrentThread.CurrentUICulture = ci;

在xaml我已设置ma选择日期如下

SelectedDate="{Binding DateOfBirth, StringFormat='DD/MM/YYYY', Mode=TwoWay}"

在风格我已设置如下文字

Text="{Binding Path=SelectedDate, StringFormat='dd/MM/yyyy', 
                            RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}">

还有什么我错过了?为什么格式没有改变?有谁可以帮我这个?

PS:我最近更新到.net框架版本4.7

wpf datepicker .net-framework-version
2个回答
0
投票

试试这个:

<DatePicker SelectedDate="{Binding DateOfBirth}">
    <DatePicker.Resources>
        <Style TargetType="{x:Type DatePickerTextBox}">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <TextBox x:Name="PART_TextBox"
                                 Text="{Binding Path=SelectedDate, StringFormat='dd/MM/yyyy', 
                                 RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.Resources>
</DatePicker>

0
投票

如果我在ma启动文件中添加以下行,问题就解决了

Thread.CurrentThread.CurrentCulture = ci;

所以文化部分应如下所示:

string currentCulture = AppSettings.Locale;
        CultureInfo ci = new System.Globalization.CultureInfo(currentCulture);
        ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        Thread.CurrentThread.CurrentUICulture = ci;
        Thread.CurrentThread.CurrentCulture = ci;
© www.soinside.com 2019 - 2024. All rights reserved.