1

我有一个可以改变文化的应用程序。但是,当我实际更改它时,所述应用程序中的日期选择器不会更改其日期格式。我试过隐藏它们,然后重新显示它们。那是行不通的。

任何人都可以帮忙吗?

编码:

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.ToString());
ci.DateTimeFormat.ShortDatePattern = SomeClass.isDDMM ? "dd/MM/yy" : "MM/dd/yy";
Thread.CurrentThread.CurrentCulture = ci;
4

1 回答 1

3

DatePicker改变当前文化时似乎存在某种问题。它不会立即正确刷新该值,但是当您将其聚焦并再次从中移除焦点时,将应用新的日期格式。

我发现解决这个问题而没有太多麻烦的唯一方法是:

var date = t.SelectedDate;
t.SelectedDate = null;
t.SelectedDate = date;

这不是很优雅,但应该可以正常工作。

这个小程序显示了单击按钮时格式是如何变化的。XAML 只包含一个DatePicker被调用dtp和一个按钮。

public partial class MainWindow : Window
{
    private string format1 = "MM/dd/yy";
    private string format2 = "dd/MM/yy";
    private string currentFormat = null;

    public MainWindow()
    {
        InitializeComponent();
        currentFormat = format1;
    }

    private void clickButton(object sender, RoutedEventArgs e)
    {
        CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.ToString());

        ci.DateTimeFormat.ShortDatePattern = currentFormat =
            currentFormat == format1 ? format2 : format1;

        Thread.CurrentThread.CurrentCulture = ci;

        //Refresh control..
        var date = dtp.SelectedDate;
        dtp.SelectedDate = null;
        dtp.SelectedDate = date;
    }
}
于 2013-02-27T19:00:14.293 回答