代码之家  ›  专栏  ›  技术社区  ›  Robert

同时使用silverlight datepicker和timepicker

  •  1
  • Robert  · 技术社区  · 15 年前

    我有两种方法可以解决这个问题:

    • 将日期和时间组件存储在不同的值中(不是很复杂,而是有点不规则,因为我将结果值存储为db中的一个字段)

    我想告诉DatePicker控件:只要在更改日期时保留时间组件。我希望太多了吗?

    1 回复  |  直到 15 年前
        1
  •  7
  •   Ryan    14 年前

    我想,你可以用converter说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}"/>