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