Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // // 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
- FaultHandlingFilter.cs
- StrokeCollectionDefaultValueFactory.cs
- SimpleHandlerFactory.cs
- Viewport2DVisual3D.cs
- FileEnumerator.cs
- XmlSerializationReader.cs
- ControlBuilderAttribute.cs
- CompilerResults.cs
- NominalTypeEliminator.cs
- StringDictionaryEditor.cs
- hresults.cs
- HyperLinkColumn.cs
- SchemaImporterExtension.cs
- HitTestDrawingContextWalker.cs
- GradientStop.cs
- ContextMarshalException.cs
- DynamicDocumentPaginator.cs
- DataKeyArray.cs
- BamlStream.cs
- CustomValidator.cs
- SrgsRulesCollection.cs
- MessageDirection.cs
- Stack.cs
- ColorAnimationBase.cs
- CombinedGeometry.cs
- UIElementAutomationPeer.cs
- UriTemplateVariableQueryValue.cs
- ConfigXmlSignificantWhitespace.cs
- RequestCachingSection.cs
- DuplexClientBase.cs
- HttpServerProtocol.cs
- MSAAWinEventWrap.cs
- XPathBinder.cs
- TypeConverter.cs
- FolderBrowserDialog.cs
- InputProcessorProfilesLoader.cs
- DeclaredTypeElement.cs
- SendingRequestEventArgs.cs
- FixedPageAutomationPeer.cs
- LostFocusEventManager.cs
- IIS7UserPrincipal.cs
- TextTreePropertyUndoUnit.cs
- CqlParser.cs
- TextEditorSelection.cs
- ColumnResult.cs
- NotImplementedException.cs
- FontEditor.cs
- LoginView.cs
- ChannelServices.cs
- ObjectMemberMapping.cs
- EntityTransaction.cs
- HttpListenerResponse.cs
- StylusCollection.cs
- SafeLocalMemHandle.cs
- SimpleTypeResolver.cs
- BufferedReceiveElement.cs
- StyleSheetComponentEditor.cs
- GACMembershipCondition.cs
- ParameterBuilder.cs
- SessionPageStatePersister.cs
- infer.cs
- XappLauncher.cs
- ISFTagAndGuidCache.cs
- ExpandableObjectConverter.cs
- TextRangeEditLists.cs
- TextContainerChangeEventArgs.cs
- InputLanguageSource.cs
- SqlParameterCollection.cs
- WorkflowMarkupSerializationException.cs
- TaskFormBase.cs
- CloseSequence.cs
- UserValidatedEventArgs.cs
- HtmlAnchor.cs
- SqlBuilder.cs
- XmlTextReader.cs
- FormatSelectingMessageInspector.cs
- MSAAEventDispatcher.cs
- SignatureGenerator.cs
- HttpCookie.cs
- SplashScreenNativeMethods.cs
- XXXOnTypeBuilderInstantiation.cs
- ElementUtil.cs
- ProxyGenerator.cs
- InheritedPropertyChangedEventArgs.cs
- EqualityComparer.cs
- InstallerTypeAttribute.cs
- SQLBinary.cs
- AstNode.cs
- PageHandlerFactory.cs
- EnumerableCollectionView.cs
- Transform3DCollection.cs
- HandlerBase.cs
- GrammarBuilder.cs
- BamlVersionHeader.cs
- SplashScreenNativeMethods.cs
- DataSvcMapFileSerializer.cs
- SerializableReadOnlyDictionary.cs
- ChannelOptions.cs
- InstalledFontCollection.cs
- LabelDesigner.cs