Как изменить формат даты в элементе управления Silverlight DatePicker? - PullRequest
18 голосов
/ 25 января 2009

Это прекрасно работает:

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

Но я хочу отформатировать дату, примерно так:

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

Кто-нибудь знает синтаксис для этого?

Ответы [ 5 ]

28 голосов
/ 24 марта 2009

К сожалению, элемент управления DatePicker в настоящее время не поддерживает бесплатные форматы DateTime.

Если вам интересно узнать о поддержке в будущей версии DatePicker, создайте запрос функции Codeplex, который предлагает это. http://silverlight.codeplex.com/WorkItem/Create.aspx

Просто отметим, что новые элементы управления TimePicker и TimeUpDown, выпущенные в марте 2009 года Silverlight Toolkit, поддерживают полный набор параметров глобализации. Один из них включает бесплатные форматы 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";
1 голос
/ 12 октября 2009

Вы должны определить пользовательский шаблон элемента управления и отредактировать текстовое поле элемента управления datepicker для форматирования текста.

0 голосов
/ 04 февраля 2013

Я заметил, что это ответ на вопрос.

Но я хотел бы уведомить о этой ссылке на набор инструментов управления Silverlight 5, который я недавно начал создавать. Он содержит (среди прочих элементов управления) элемент управления DateTimeBox, в котором вы можете обрабатывать как дату, так и время в одном и том же элементе управления. На данный момент он все еще находится в стадии разработки, но его следует использовать для большинства сценариев.

0 голосов
/ 13 мая 2010

Вы можете просто скрыть текстовое поле элементов управления (с меньшей шириной), выставить свое собственное (опционально установить 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>

UPDATE: Привязка TwoWay из текстового поля к средству выбора даты работает хорошо, но не обновляет свойство ViewModel. Поэтому я собираюсь установить IsEnabled = False и назвать его хорошим.

0 голосов
/ 23 февраля 2009

В Silverlight DatePicker есть свойство SelectedDateFormat, это может быть то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...