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
- ArraySet.cs
- TaskbarItemInfo.cs
- Range.cs
- DateTimeValueSerializerContext.cs
- PerformanceCountersElement.cs
- SwitchAttribute.cs
- ApplicationSettingsBase.cs
- WebPartMovingEventArgs.cs
- NativeBuffer.cs
- ToolStripLabel.cs
- OLEDB_Enum.cs
- StringFormat.cs
- XXXOnTypeBuilderInstantiation.cs
- NotificationContext.cs
- XmlDataSourceDesigner.cs
- Int32Rect.cs
- DataGridViewRow.cs
- RequestUriProcessor.cs
- PageClientProxyGenerator.cs
- UpDownBase.cs
- HandlerMappingMemo.cs
- ImageDrawing.cs
- DetailsViewInsertedEventArgs.cs
- IntSecurity.cs
- ButtonChrome.cs
- _NetworkingPerfCounters.cs
- XamlVector3DCollectionSerializer.cs
- ComponentManagerBroker.cs
- Vars.cs
- MaskedTextProvider.cs
- ImageMap.cs
- BinaryMethodMessage.cs
- DocumentScope.cs
- DiscoveryExceptionDictionary.cs
- RemotingException.cs
- ParenthesizePropertyNameAttribute.cs
- WindowsStatic.cs
- ResXBuildProvider.cs
- NamespaceEmitter.cs
- Internal.cs
- MimeMultiPart.cs
- Camera.cs
- PathHelper.cs
- BuildResult.cs
- TextTrailingWordEllipsis.cs
- TemplateKey.cs
- ConfigurationProviderException.cs
- ViewManager.cs
- Bitmap.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ObjectReferenceStack.cs
- BuildManager.cs
- RelatedEnd.cs
- Utils.cs
- LicenseManager.cs
- UseLicense.cs
- RuleSettings.cs
- XNodeValidator.cs
- SchemaName.cs
- JournalNavigationScope.cs
- SurrogateSelector.cs
- TextBreakpoint.cs
- PassportAuthenticationModule.cs
- ConfigurationElement.cs
- PointAnimationUsingPath.cs
- MD5.cs
- ConnectionPoolManager.cs
- DBDataPermission.cs
- SimpleColumnProvider.cs
- ZipFileInfo.cs
- XmlSchemaSimpleContentExtension.cs
- WebPartConnectionCollection.cs
- ComponentRenameEvent.cs
- MatrixAnimationUsingKeyFrames.cs
- UpdatePanelTriggerCollection.cs
- CompilerScope.Storage.cs
- SortKey.cs
- FontDifferentiator.cs
- TextSearch.cs
- OAVariantLib.cs
- EmptyEnumerable.cs
- SafeCoTaskMem.cs
- RealizationDrawingContextWalker.cs
- Mappings.cs
- XmlSerializerFormatAttribute.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- OperatingSystem.cs
- ContainerParaClient.cs
- EncodingStreamWrapper.cs
- InputMethod.cs
- PointHitTestResult.cs
- ExclusiveTcpListener.cs
- TimeSpanHelper.cs
- __FastResourceComparer.cs
- ServiceActivationException.cs
- DesignerCategoryAttribute.cs
- UseAttributeSetsAction.cs
- BitmapEffectInput.cs
- SiteMapNodeItem.cs
- SqlOuterApplyReducer.cs