Совместное использование DatePicker и Timelight - PullRequest
1 голос
/ 30 октября 2010

Я использую Silverlight DatePicker и TimePicker из набора инструментов вместе, чтобы позволить пользователю выбрать дату и время.Они привязаны к одному и тому же значению DateTime на бизнес-объекте за кулисами.Это в основном работает нормально, за исключением случаев, когда компонент даты изменяется, а компонент времени стирается.Это довольно логично, но, вероятно, не то поведение, которое хотел пользователь.

Есть несколько способов, которыми я мог бы обойти это:

  • Хранить компоненты даты и времени в разных значениях(не так уж и странно, но немного раздражающе, поскольку я собираюсь сохранить полученное значение как одно поле в БД)
  • Попытаться исправить компонент времени, когда срабатывает событие SelectedDateChanged (что кажется очень взломаннымрешение)

Я бы хотел сообщить элементу управления DatePicker: просто оставьте компонент времени при изменении даты.Надеюсь ли я на слишком много?

1 Ответ

7 голосов
/ 01 ноября 2010

Я думаю, вы можете сказать DatePicker "Просто оставьте компонент времени, когда вы меняете дату", используя конвертер :). Когда вы связываете DateTime с DatePicker, конвертер сохраняет значение, а ConvertBack возвращает без изменений часть времени.

public class DateConverter : IValueConverter
{
    private DateTime _original;

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        _original = (DateTime)value;
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime date = ((DateTime) value);
        return new DateTime(date.Year, date.Month, date.Day, _original.Hour, _original.Minute, _original.Second);
    }
}

XAML:

<sdk:DatePicker SelectedDate="{Binding Date, Mode=TwoWay, 
                Converter={StaticResource dateConverter}}" />

<input:TimePicker Value="{Binding Date, Mode=TwoWay}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...