Browse Source

DateTimeUpDown: fixed bug I just introduced.

pull/1645/head
brianlagunas_cp 15 years ago
parent
commit
35c134a302
  1. 5
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeParser.cs
  2. 12
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs

5
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeParser.cs

@ -105,11 +105,14 @@ namespace Microsoft.Windows.Controls
var dates = date.Split(dateSeparators, StringSplitOptions.RemoveEmptyEntries).ToList(); var dates = date.Split(dateSeparators, StringSplitOptions.RemoveEmptyEntries).ToList();
var formats = Format.Split(dateSeparators, StringSplitOptions.RemoveEmptyEntries).ToList(); var formats = Format.Split(dateSeparators, StringSplitOptions.RemoveEmptyEntries).ToList();
if (dates.Count != formats.Count)
return string.Empty;
//strip out the date pieces //strip out the date pieces
for (int i = 0; i < formats.Count; i++) for (int i = 0; i < formats.Count; i++)
{ {
var format = formats[i]; var format = formats[i];
if (!format.Equals("dddd") && !format.Contains(DateTimeFormatInfo.AMDesignator) && !format.Contains(DateTimeFormatInfo.PMDesignator)) if (!format.Equals("dddd") && !format.Equals(DateTimeFormatInfo.AMDesignator) && !format.Equals(DateTimeFormatInfo.PMDesignator))
{ {
if (format.Contains("M")) if (format.Contains("M"))
dateParts[0] = dates[i]; dateParts[0] = dates[i];

12
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/DateTimeUpDown/Implementation/DateTimeUpDown.cs

@ -17,7 +17,7 @@ namespace Microsoft.Windows.Controls
private bool _fireSelectionChangedEvent = true; private bool _fireSelectionChangedEvent = true;
private bool _isSyncingTextAndValueProperties; private bool _isSyncingTextAndValueProperties;
private DateTimeParser _dateParser; private DateTimeParser _dateTimeParser;
#endregion //Members #endregion //Members
@ -165,8 +165,6 @@ namespace Microsoft.Windows.Controls
{ {
base.OnApplyTemplate(); base.OnApplyTemplate();
TextBox.SelectionChanged += TextBox_SelectionChanged; TextBox.SelectionChanged += TextBox_SelectionChanged;
_dateParser = new DateTimeParser(DateTimeFormatInfo, GetFormatString(Format));
} }
protected override void OnIncrement() protected override void OnIncrement()
@ -212,16 +210,20 @@ namespace Microsoft.Windows.Controls
protected override void OnTextChanged(string previousValue, string currentValue) protected override void OnTextChanged(string previousValue, string currentValue)
{ {
//TODO: clean this up and make sure it doesn't fire recursively
if (String.IsNullOrEmpty(currentValue)) if (String.IsNullOrEmpty(currentValue))
{ {
Value = null; Value = null;
return; return;
} }
//TODO: clean this up and make sure it doesn't fire recursively if (_dateTimeParser == null)
_dateTimeParser = new DateTimeParser(DateTimeFormatInfo, GetFormatString(Format));
DateTime current = Value.HasValue ? Value.Value : DateTime.Now; DateTime current = Value.HasValue ? Value.Value : DateTime.Now;
DateTime result; DateTime result;
var success = _dateParser.TryParse(currentValue, out result, current); var success = _dateTimeParser.TryParse(currentValue, out result, current);
SyncTextAndValueProperties(InputBase.TextProperty, result); SyncTextAndValueProperties(InputBase.TextProperty, result);
} }

Loading…
Cancel
Save