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
- RequestBringIntoViewEventArgs.cs
- Section.cs
- PreviewPageInfo.cs
- PersonalizationStateQuery.cs
- DateTimePicker.cs
- XmlAnyElementAttribute.cs
- EntityObject.cs
- TimeStampChecker.cs
- TypeProvider.cs
- BindingManagerDataErrorEventArgs.cs
- _FixedSizeReader.cs
- TypeReference.cs
- FontFaceLayoutInfo.cs
- ExpressionBinding.cs
- InputLanguageCollection.cs
- SerializerWriterEventHandlers.cs
- TimeSpanValidator.cs
- ToolStripPanel.cs
- DropDownList.cs
- TrayIconDesigner.cs
- SmtpDigestAuthenticationModule.cs
- Transform3D.cs
- ControlIdConverter.cs
- ServiceBuildProvider.cs
- control.ime.cs
- FrameworkContextData.cs
- AgileSafeNativeMemoryHandle.cs
- MenuAdapter.cs
- MachineSettingsSection.cs
- RequestCache.cs
- SR.cs
- XmlRawWriterWrapper.cs
- CorrelationManager.cs
- BitmapFrame.cs
- SqlProviderManifest.cs
- Vector.cs
- RegionInfo.cs
- HideDisabledControlAdapter.cs
- VectorCollectionConverter.cs
- SizeAnimationUsingKeyFrames.cs
- ConfigXmlComment.cs
- TouchesOverProperty.cs
- Avt.cs
- SafeFileHandle.cs
- XpsImage.cs
- CodeObjectCreateExpression.cs
- FormsAuthentication.cs
- UpdatePanel.cs
- EncodingNLS.cs
- FontResourceCache.cs
- KnownTypes.cs
- RawTextInputReport.cs
- UIElement3D.cs
- PropertyTabChangedEvent.cs
- CreateInstanceBinder.cs
- FormViewDeleteEventArgs.cs
- RoleServiceManager.cs
- BookmarkOptionsHelper.cs
- AllMembershipCondition.cs
- DataGridView.cs
- ManipulationLogic.cs
- SqlUdtInfo.cs
- TreeViewImageIndexConverter.cs
- SoapTypeAttribute.cs
- BindingMAnagerBase.cs
- HtmlLiteralTextAdapter.cs
- Debugger.cs
- KnowledgeBase.cs
- ScriptControlManager.cs
- ObjectQueryState.cs
- GridView.cs
- AutoGeneratedFieldProperties.cs
- Closure.cs
- CompositeTypefaceMetrics.cs
- SinglePhaseEnlistment.cs
- IsolatedStorage.cs
- HandlerFactoryCache.cs
- TokenBasedSet.cs
- CollectionViewSource.cs
- Geometry.cs
- SQLDoubleStorage.cs
- NameValueFileSectionHandler.cs
- PanelStyle.cs
- EntityViewGenerationAttribute.cs
- MessageQueue.cs
- ProcessHostFactoryHelper.cs
- TdsParserSessionPool.cs
- Int16Animation.cs
- DateTimeConverter.cs
- StylusPlugInCollection.cs
- CryptoHandle.cs
- TextTreeDeleteContentUndoUnit.cs
- ColorPalette.cs
- WindowsScroll.cs
- BreakRecordTable.cs
- Merger.cs
- TitleStyle.cs
- _UncName.cs
- DbParameterCollectionHelper.cs
- DynamicMethod.cs