1

現在、WPFアプリケーションを使用しており、DateTimePickerの独自のカスタムコントロールを作成する必要があります。DateTime Pickerには、ユーザー定義の日付形式を設定するためのプロビジョニングはありません。

これを行うためのアプローチは何ですか..アイデアを持っている人がいれば私を助けてください。

アリジットに感謝します。


ユーザー定義形式とは、セナリオンに構成ファイルがあり、日時が表示される軸がn個あり、構成ファイルで構成されている形式で現在の日付を表示するドロップダウンがあることを意味します。軸ごとに構成ファイルの形式が異なる場合があります。このセナリオンでは、日付ピッカーに現在選択されている軸の形式を入力する必要があります。

今問題は、@ Sebastian Edelmeierがすでに指摘したことを、次のアプローチですでに試したことですが、

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
ci.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = ci; 

ドロップダウンの変更というアプリケーションのカルチャを変更するので、その方法は受け入れられません。さらに、コントロールは、現在のスレッドが更新されると、別のカルチャに戻らなかったというダイアログです。

私はその時点で完全に立ち往生しています。

4

2 に答える 2

0

おそらく、Binding の StringFormat パラメータで DatePickerTextBox の ControlTemplate を上書きできます。例えば

<Style TargetType="{x:Type DatePickerTextBox}">
   <Setter Property="Control.Template">
       <Setter.Value>
          <ControlTemplate>
              <TextBox x:Name="PART_TextBox" 
                   Text="{Binding Path=SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}, StringFormat=\{0:f\}}" />
              </ControlTemplate>
       </Setter.Value>
   </Setter>
</Style>

ここで、{0:f} は目的の文字列形式です。または、カスタム コンバーターを使用して、目的の形式を取得することもできます。これで十分だと思いますので、datepicker 全体のコントロール テンプレートを上書きする必要はありません。

于 2012-05-21T06:56:05.903 に答える
-1

すべての機能が必要で、日付の記述方法のみを変更する場合は、 CultureInfo を編集するだけです。

 CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
 ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
 ci.DateTimeFormat.DateSeparator = "/";
 Thread.CurrentThread.CurrentCulture = ci;

これでうまくいくはずです。

于 2012-05-18T09:03:29.297 に答える