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;
}
}