文本框的自定义日期格式
相关:将3个文本框绑定在一起; 相同的DateTime格式不同
我有三个textboxes
,所有textboxes
都应该绑定在同一个日期。 其中两个具有正常的字符串格式。 第三个具有yyyy,jjj/HHmmss
的特定格式。 我无法弄清楚如何将此textbox
绑定到我拥有的自定义格式,并且如果我更改其中的任何日期值,那么其他textboxes
将更新,反之亦然。
private DateTime _dateInViewModel; public DateTime DateInViewModel { get { return _dateInViewModel; } set { _dateInViewModel = value; NotifyPropertyChanged("DateInViewModel"); } }
自定义格式可以像:
format = String.Format("{0},{1}/{2}", DateInViewModel.Year, DateInViewModel.DayOfYear.ToString("d3"), DateInViewModel.ToString("HHmmss"));
现在,只有SDate1
和STime1
正确绑定,并在另一个更改时更新。
我做了一个转换器。 当SDate1
和STime1
发生更改时,它会正确更新SDate2
,但在编辑SDate2
以更新其他SDate2
时不能正常工作。
public class DateTimeConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value != null) { DateTime test = (DateTime)value; string date = String.Format("{0},{1}/{2}", test.Year, test.DayOfYear.ToString("d3"), test.ToString("HHmmss")); return (date); } return string.Empty; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion }
您需要在转换器中设置转换。 这只是一个示例,但您需要将值解析回原始源,以便可以更新其他绑定。
由于您的格式为{0},{1}/{2}
因此您需要将其拆分并重新构建预期日期。
上述就是C#学习教程:文本框的自定义日期格式分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return null; string strValue = value.ToString(); if (string.IsNullOrEmpty(strValue) && targetType == typeof(DateTime?)) { return null; } else if (string.IsNullOrEmpty(strValue)) { return DateTime.MinValue; } //year,dayOfYear/Time(HHmmss) var parts = strValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { var year = parts[0]; parts = parts[1].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { var days = parts[0]; var time = parts[1]; var date = new DateTime(int.Parse(year), 1, 1) .AddDays(int.Parse(days)) .Add(TimeSpan.Parse(time)); return date; } } DateTime resultDateTime; return DateTime.TryParse(strValue, out resultDateTime) ? resultDateTime : value; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987402.html