Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / CalendarDateRange.cs / 1305600 / CalendarDateRange.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.ComponentModel; namespace System.Windows.Controls { ////// Specifies a DateTime range class which has a start and end. /// public sealed class CalendarDateRange : INotifyPropertyChanged { #region Data private DateTime _end; private DateTime _start; #endregion Data ////// Initializes a new instance of the CalendarDateRange class. /// public CalendarDateRange() : this(DateTime.MinValue, DateTime.MaxValue) { } ////// Initializes a new instance of the CalendarDateRange class which creates a range from a single DateTime value. /// /// public CalendarDateRange(DateTime day) : this(day, day) { } ////// Initializes a new instance of the CalendarDateRange class which accepts range start and end dates. /// /// /// public CalendarDateRange(DateTime start, DateTime end) { _start = start; _end = end; } #region Public Events public event PropertyChangedEventHandler PropertyChanged; #endregion #region Public Properties ////// Specifies the End date of the CalendarDateRange. /// public DateTime End { get { return CoerceEnd(_start, _end); } set { DateTime newEnd = CoerceEnd(_start, value); if (newEnd != End) { OnChanging(new CalendarDateRangeChangingEventArgs(_start, newEnd)); _end = value; OnPropertyChanged(new PropertyChangedEventArgs("End")); } } } ////// Specifies the Start date of the CalendarDateRange. /// public DateTime Start { get { return _start; } set { if (_start != value) { DateTime oldEnd = End; DateTime newEnd = CoerceEnd(value, _end); OnChanging(new CalendarDateRangeChangingEventArgs(value, newEnd)); _start = value; OnPropertyChanged(new PropertyChangedEventArgs("Start")); if (newEnd != oldEnd) { OnPropertyChanged(new PropertyChangedEventArgs("End")); } } } } #endregion Public Properties #region Internal Events internal event EventHandlerChanging; #endregion Internal Events #region Internal Methods /// /// Returns true if any day in the given DateTime range is contained in the current CalendarDateRange. /// /// ///internal bool ContainsAny(CalendarDateRange range) { return (range.End >= this.Start) && (this.End >= range.Start); } #endregion Internal Methods #region Private Methods private void OnChanging(CalendarDateRangeChangingEventArgs e) { EventHandler handler = this.Changing; if (handler != null) { handler(this, e); } } private void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler handler = this.PropertyChanged; if (handler != null) { handler(this, e); } } /// /// Coerced the end parameter to satisfy the start <= end constraint /// /// /// ///If start <= end the end parameter otherwise the start parameter private static DateTime CoerceEnd(DateTime start, DateTime end) { return (DateTime.Compare(start, end) <= 0) ? end : start; } #endregion Private Methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaAnyAttribute.cs
- designeractionbehavior.cs
- GrammarBuilder.cs
- x509store.cs
- GlobalizationSection.cs
- TCPListener.cs
- RemotingConfigParser.cs
- GlobalAllocSafeHandle.cs
- TdsParameterSetter.cs
- XmlDataSource.cs
- SelectionEditingBehavior.cs
- RotateTransform3D.cs
- MeasureItemEvent.cs
- ReadWriteObjectLock.cs
- CollectionBase.cs
- CacheEntry.cs
- Region.cs
- AnimationClock.cs
- AssemblyCache.cs
- FileRecordSequenceHelper.cs
- CommandValueSerializer.cs
- PerfService.cs
- ViewLoader.cs
- Ray3DHitTestResult.cs
- HtmlTableCellCollection.cs
- Stackframe.cs
- OrCondition.cs
- EventPropertyMap.cs
- ZipIOCentralDirectoryFileHeader.cs
- WsdlBuildProvider.cs
- RenderData.cs
- EventSource.cs
- ValueConversionAttribute.cs
- OutputCacheSettings.cs
- ParsedAttributeCollection.cs
- GridView.cs
- MimeMapping.cs
- MemberInfoSerializationHolder.cs
- XmlSequenceWriter.cs
- NumericPagerField.cs
- CompensationDesigner.cs
- PropertyOrder.cs
- OutOfProcStateClientManager.cs
- CqlParserHelpers.cs
- RegexWriter.cs
- CopyNodeSetAction.cs
- SecurityTokenValidationException.cs
- CompressedStack.cs
- SQLBytes.cs
- LoginAutoFormat.cs
- DataGridViewCheckBoxCell.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- IODescriptionAttribute.cs
- Italic.cs
- CatalogZoneBase.cs
- KeyFrames.cs
- FormViewRow.cs
- MimePart.cs
- SqlTypeConverter.cs
- XmlSchemaType.cs
- ControlEvent.cs
- DependsOnAttribute.cs
- PositiveTimeSpanValidatorAttribute.cs
- DataTableReaderListener.cs
- Normalization.cs
- SingleAnimation.cs
- ClientScriptManager.cs
- XPathSelectionIterator.cs
- PnrpPermission.cs
- ServiceDescription.cs
- InertiaTranslationBehavior.cs
- RangeContentEnumerator.cs
- IsolatedStorageFileStream.cs
- NameTable.cs
- TdsEnums.cs
- versioninfo.cs
- CodeDomLoader.cs
- TableLayoutRowStyleCollection.cs
- RadioButtonBaseAdapter.cs
- WindowsSolidBrush.cs
- SmtpNegotiateAuthenticationModule.cs
- webclient.cs
- PositiveTimeSpanValidatorAttribute.cs
- TextServicesPropertyRanges.cs
- DependencyPropertyKey.cs
- RadioButton.cs
- MarshalByValueComponent.cs
- RichTextBox.cs
- Rfc2898DeriveBytes.cs
- FlowDocumentScrollViewer.cs
- LocatorManager.cs
- BindingUtils.cs
- ParagraphResult.cs
- RuleElement.cs
- OdbcEnvironmentHandle.cs
- AccessDataSource.cs
- TreeNodeCollection.cs
- SHA384Managed.cs
- XmlSchemaSimpleType.cs
- ObjRef.cs