web-dev-qa-db-ja.com

Silverlight DatePickerコントロールで日付形式を変更するにはどうすればよいですか?

これはうまく機能します:

<my:DatePicker IsTodayHighlighted="True" Width="200">
</my:DatePicker> 

しかし、私は日付を次のようにフォーマットしたいと思います。

<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd">
</my:DatePicker> 

誰もがこれの構文を知っていますか?

18
Edward Tanguay

残念ながら、DatePickerコントロールは現在、無料のDateTime形式をサポートしていません。

これがDatePickerの将来のバージョンでサポートを確認することに関心がある場合は、それを示唆するコードプレックス機能リクエストを作成してください。 http://silverlight.codeplex.com/WorkItem/Create.aspx

新しいSilverlightToolkit 2009年3月のTimePickerおよびTimeUpDownコントロールは、すべてのグローバリゼーションオプションをサポートしていることを指摘しておきます。それらの1つには、無料のDateTime形式が含まれています。したがって、その機能をDatePickerに移植するかどうかは、公共の利益の問題にすぎません。 TimePicker @ http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker の形式を確認してください。

それまでの間、最善の回避策は、地域の文化または地域の文化の形式を変更することです。

    public App()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-NL");

または、地域の文化の形式を変更します。

        public App()
    {
        Thread.CurrentThread.CurrentCulture = (CultureInfo) Thread.CurrentThread.CurrentCulture.Clone();
        Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "D/m/yyyy";
28
JustinAngel

カスタムコントロールテンプレートを定義し、datepickerコントロールのテキストボックスを編集してテキストをフォーマットする必要があります。

1
Deep1

SilverlightDatePickerにはSelectedDateFormatプロパティがあります。これはあなたが探しているものかもしれません。

0
punkcoder

コントロールのテキストボックスを非表示にし(幅を狭くして)、自分のテキストボックスを公開し(オプションでIsEnabledをfalseに設定)、要素のバインドとコンバーターを使用できます。 MVVMを使用している場合は、DataContextをViewModelに設定します。別のオプションは、DataTemplateを上書きしてテキストボックスを含めないようにし、同じアイデアを実行することだと思います。

<StackPanel Orientation="Horizontal" Height="22">
      <TextBox x:Name="textBox2" Width="106" Text="{Binding ElementName=datePicker2, Path=SelectedDate, Mode=TwoWay, Converter={StaticResource internationalDateTimeFormatConverter}}" />
      <controls:DatePicker x:Name="datePicker2" IsTabStop="False" SelectedDate="{Binding TargetDatePicker, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="23" HorizontalAlignment="Left" />
</StackPanel>

更新:テキストボックスから日付ピッカーへのTwoWayバインディングは正常に機能しますが、ViewModelプロパティは更新されません。そこで、IsEnabled = Falseを設定して、それを適切と呼びます。

0
Aligned

これは答えられた質問だと思います。

ただし、最近作成を開始したSilverlight 5コントロールツールキットに このリンク について通知したいと思います。これには、(他のコントロールの中でも)同じコントロール内で日付と時刻の両方を処理できるDateTimeBoxコントロールが含まれています。この時点ではまだ開発中ですが、ほとんどのシナリオで使用できるはずです。

0
Mats Magnem