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
- PageAsyncTask.cs
- PagesSection.cs
- LockedHandleGlyph.cs
- EventLog.cs
- IListConverters.cs
- DispatcherObject.cs
- DesignerCapabilities.cs
- RectangleHotSpot.cs
- HttpFileCollection.cs
- NonBatchDirectoryCompiler.cs
- BitmapEffectInputConnector.cs
- TextDpi.cs
- UpdateDelegates.Generated.cs
- DBSchemaTable.cs
- UserControlAutomationPeer.cs
- safelinkcollection.cs
- RelatedView.cs
- TextEditorTyping.cs
- PhonemeEventArgs.cs
- BasicSecurityProfileVersion.cs
- ExceptionValidationRule.cs
- TableItemStyle.cs
- AttributeTableBuilder.cs
- UrlPropertyAttribute.cs
- HttpRequestContext.cs
- WebException.cs
- XhtmlBasicCalendarAdapter.cs
- StopStoryboard.cs
- PolicyException.cs
- UpdateException.cs
- ToolboxComponentsCreatedEventArgs.cs
- SynchronizationContext.cs
- BulletedList.cs
- GlyphRunDrawing.cs
- LinkedResource.cs
- ListViewUpdateEventArgs.cs
- ObjectDataSourceStatusEventArgs.cs
- ProfileEventArgs.cs
- CoTaskMemSafeHandle.cs
- WebSysDefaultValueAttribute.cs
- NameNode.cs
- ProxyBuilder.cs
- BaseProcessProtocolHandler.cs
- UrlPropertyAttribute.cs
- ToolStrip.cs
- RootBuilder.cs
- TimeSpan.cs
- ObjectViewEntityCollectionData.cs
- MimeBasePart.cs
- TextFormattingConverter.cs
- DesignerDataRelationship.cs
- PeerInvitationResponse.cs
- FlowDocumentPageViewerAutomationPeer.cs
- ByteStack.cs
- ListBase.cs
- ConfigurationSection.cs
- RegexCaptureCollection.cs
- FontStyles.cs
- RegexStringValidator.cs
- XmlHelper.cs
- FieldToken.cs
- UIElement.cs
- GridItem.cs
- XmlSerializationGeneratedCode.cs
- WindowsScrollBarBits.cs
- DataBoundControlHelper.cs
- Nodes.cs
- SmiMetaData.cs
- ThicknessAnimationUsingKeyFrames.cs
- XmlSchemaResource.cs
- StructuredProperty.cs
- PointConverter.cs
- ListControlDesigner.cs
- PopupEventArgs.cs
- AnonymousIdentificationSection.cs
- StylusPointPropertyId.cs
- UrlMappingsModule.cs
- ScrollChrome.cs
- TabControlCancelEvent.cs
- DbConnectionHelper.cs
- XPathNode.cs
- Int64Storage.cs
- PersistenceProviderDirectory.cs
- EdmType.cs
- HebrewCalendar.cs
- ElementFactory.cs
- PackWebResponse.cs
- EntityParameter.cs
- DataGridRowClipboardEventArgs.cs
- NetPipeSection.cs
- GAC.cs
- MouseActionValueSerializer.cs
- RewritingSimplifier.cs
- InstancePersistenceContext.cs
- CodeCastExpression.cs
- IdentityModelStringsVersion1.cs
- SafeCertificateContext.cs
- XdrBuilder.cs
- EdmFunction.cs
- TableLayoutStyle.cs