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 に答える