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
- WebPartEditorOkVerb.cs
- PathGradientBrush.cs
- OpenFileDialog.cs
- SharedStream.cs
- DateTimeFormatInfoScanner.cs
- Timer.cs
- ManualWorkflowSchedulerService.cs
- ImpersonationContext.cs
- Schema.cs
- XPathQueryGenerator.cs
- StylusPlugin.cs
- BinaryFormatter.cs
- DataPagerFieldItem.cs
- Registry.cs
- ProtocolsConfigurationHandler.cs
- CompositeActivityTypeDescriptorProvider.cs
- CardSpaceSelector.cs
- WmfPlaceableFileHeader.cs
- SecurityBindingElement.cs
- DocComment.cs
- NetCodeGroup.cs
- NumberSubstitution.cs
- CompressEmulationStream.cs
- MethodAccessException.cs
- LineGeometry.cs
- HMACSHA384.cs
- StrongName.cs
- DynamicDataRoute.cs
- CapabilitiesSection.cs
- ServiceEndpoint.cs
- PasswordRecoveryDesigner.cs
- OperatorExpressions.cs
- SqlWebEventProvider.cs
- WhiteSpaceTrimStringConverter.cs
- XmlDocumentSerializer.cs
- GrammarBuilderBase.cs
- XmlQualifiedName.cs
- SourceItem.cs
- SizeAnimation.cs
- CommonObjectSecurity.cs
- ReadWriteSpinLock.cs
- PropertyGeneratedEventArgs.cs
- SQLDecimal.cs
- x509utils.cs
- GridViewUpdatedEventArgs.cs
- DataBindingHandlerAttribute.cs
- SiteMapNodeItem.cs
- _DisconnectOverlappedAsyncResult.cs
- VariantWrapper.cs
- DesignerWithHeader.cs
- CommentGlyph.cs
- RSAPKCS1KeyExchangeFormatter.cs
- EventWaitHandle.cs
- MarginCollapsingState.cs
- DocumentsTrace.cs
- NavigationPropertyAccessor.cs
- WrapPanel.cs
- SupportsEventValidationAttribute.cs
- EndpointBehaviorElementCollection.cs
- DataTableReader.cs
- InstanceLockTracking.cs
- AnnotationAdorner.cs
- MissingFieldException.cs
- VideoDrawing.cs
- EngineSiteSapi.cs
- ScriptServiceAttribute.cs
- Journal.cs
- IndexerNameAttribute.cs
- UIInitializationException.cs
- ColorConvertedBitmapExtension.cs
- CodeMethodInvokeExpression.cs
- AutomationPatternInfo.cs
- HighContrastHelper.cs
- Queue.cs
- Size.cs
- _DynamicWinsockMethods.cs
- Crypto.cs
- MetadataArtifactLoader.cs
- SHA384Managed.cs
- CultureSpecificCharacterBufferRange.cs
- XmlWrappingReader.cs
- FlowLayoutPanel.cs
- DockPattern.cs
- DesigntimeLicenseContextSerializer.cs
- DefaultProxySection.cs
- ArcSegment.cs
- adornercollection.cs
- CodeMemberMethod.cs
- MultiAsyncResult.cs
- UnmanagedMemoryAccessor.cs
- UnaryOperationBinder.cs
- ConcurrentDictionary.cs
- PackageRelationshipSelector.cs
- ViewStateException.cs
- TextTreeUndo.cs
- TraceLog.cs
- XmlWriter.cs
- FunctionNode.cs
- ControlAdapter.cs
- ApplicationBuildProvider.cs