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
- MultidimensionalArrayItemReference.cs
- PeerFlooder.cs
- SqlMetaData.cs
- IndentedTextWriter.cs
- HuffmanTree.cs
- TextViewBase.cs
- LinqDataSourceDeleteEventArgs.cs
- EntityRecordInfo.cs
- Flowchart.cs
- RoleManagerEventArgs.cs
- SymDocumentType.cs
- PageHandlerFactory.cs
- LockCookie.cs
- DynamicValidator.cs
- RecipientInfo.cs
- SecurityDescriptor.cs
- QuerySetOp.cs
- ActivityExecutor.cs
- HostUtils.cs
- NetNamedPipeSecurityMode.cs
- WebPartDisplayModeCollection.cs
- EncodingInfo.cs
- XmlSchemaIdentityConstraint.cs
- _HelperAsyncResults.cs
- ObjectComplexPropertyMapping.cs
- ClientConfigPaths.cs
- BitmapEffectDrawingContextState.cs
- Timeline.cs
- MainMenu.cs
- StubHelpers.cs
- Cell.cs
- AssemblySettingAttributes.cs
- ServicesUtilities.cs
- MimeBasePart.cs
- TemplatePagerField.cs
- ClientType.cs
- PrintPageEvent.cs
- PointF.cs
- SplitContainer.cs
- OperationContextScope.cs
- ListChunk.cs
- DataGridViewRowsRemovedEventArgs.cs
- ProfileEventArgs.cs
- ResourceProperty.cs
- SimpleRecyclingCache.cs
- CellQuery.cs
- DependencyPropertyKey.cs
- wgx_commands.cs
- CompilerResults.cs
- CreateRefExpr.cs
- XmlNodeChangedEventArgs.cs
- FixUp.cs
- InputProcessorProfiles.cs
- SerializationUtility.cs
- ObjectQuery.cs
- TaskExtensions.cs
- InvokeFunc.cs
- CalendarItem.cs
- ParentUndoUnit.cs
- StandardBindingImporter.cs
- TraceFilter.cs
- RootBrowserWindow.cs
- ParserHooks.cs
- Error.cs
- DecoderBestFitFallback.cs
- FixedTextPointer.cs
- WaitHandleCannotBeOpenedException.cs
- DbMetaDataColumnNames.cs
- ResourceLoader.cs
- CellParagraph.cs
- ListViewInsertedEventArgs.cs
- DbConnectionStringBuilder.cs
- Win32Exception.cs
- ArcSegment.cs
- dsa.cs
- LinqToSqlWrapper.cs
- ProviderSettingsCollection.cs
- FontStyles.cs
- TextEditorTyping.cs
- CodeDelegateCreateExpression.cs
- InvalidTimeZoneException.cs
- externdll.cs
- OdbcCommand.cs
- HtmlShimManager.cs
- AlternateView.cs
- DataGridViewCellMouseEventArgs.cs
- TextTrailingWordEllipsis.cs
- AnimationException.cs
- BitmapCodecInfo.cs
- COM2EnumConverter.cs
- ComponentEditorForm.cs
- MetadataItem.cs
- Error.cs
- SqlDependencyUtils.cs
- CodeTypeReference.cs
- DataGridViewTextBoxColumn.cs
- TextControl.cs
- InputReportEventArgs.cs
- VBCodeProvider.cs
- ApplicationDirectoryMembershipCondition.cs