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
- RoleService.cs
- UniqueIdentifierService.cs
- TextTreeDeleteContentUndoUnit.cs
- FolderLevelBuildProviderCollection.cs
- NativeMethodsOther.cs
- WebPartVerbsEventArgs.cs
- EventDescriptor.cs
- PartitionedStreamMerger.cs
- InternalPermissions.cs
- UTF32Encoding.cs
- EpmTargetTree.cs
- AnonymousIdentificationSection.cs
- HyperLink.cs
- LinqDataSourceHelper.cs
- ToolStripButton.cs
- ConstrainedDataObject.cs
- ImportCatalogPart.cs
- TriState.cs
- WebServiceClientProxyGenerator.cs
- BamlLocalizationDictionary.cs
- EnumerableCollectionView.cs
- MetricEntry.cs
- QuerySubExprEliminator.cs
- TextElementCollection.cs
- ColumnBinding.cs
- AddressHeaderCollection.cs
- RegexCapture.cs
- ManagementScope.cs
- XmlUTF8TextWriter.cs
- DBSqlParserTable.cs
- XmlReaderSettings.cs
- Point.cs
- DebugHandleTracker.cs
- PathFigureCollectionConverter.cs
- DependencyPropertyKey.cs
- StorageModelBuildProvider.cs
- OleDbTransaction.cs
- ReflectionPermission.cs
- ListControlStringCollectionEditor.cs
- OpenTypeLayout.cs
- Crc32.cs
- EnumerableCollectionView.cs
- XhtmlBasicListAdapter.cs
- IndexOutOfRangeException.cs
- RequestFactory.cs
- Rotation3DAnimationBase.cs
- MetadataItemEmitter.cs
- AdornedElementPlaceholder.cs
- BufferedGraphicsManager.cs
- DataGridBoundColumn.cs
- ObjectNavigationPropertyMapping.cs
- XomlCompiler.cs
- METAHEADER.cs
- TraceSection.cs
- ImageFormatConverter.cs
- SiteMapDataSource.cs
- SwitchAttribute.cs
- ImageAnimator.cs
- MessageSmuggler.cs
- ExpanderAutomationPeer.cs
- StorageModelBuildProvider.cs
- ThreadAbortException.cs
- CodePrimitiveExpression.cs
- WebPartZoneDesigner.cs
- DataRelationCollection.cs
- ReliabilityContractAttribute.cs
- ColumnPropertiesGroup.cs
- DiscoveryMessageSequence.cs
- PauseStoryboard.cs
- CorrelationQueryBehavior.cs
- VariableBinder.cs
- PlatformCulture.cs
- ParserStreamGeometryContext.cs
- BitmapPalette.cs
- DataListItem.cs
- VirtualPath.cs
- COMException.cs
- DropDownList.cs
- LineMetrics.cs
- RootBrowserWindow.cs
- FillRuleValidation.cs
- BamlLocalizableResourceKey.cs
- SchemaObjectWriter.cs
- SqlServer2KCompatibilityCheck.cs
- StreamedWorkflowDefinitionContext.cs
- StrokeCollection.cs
- TypeConverterValueSerializer.cs
- SequentialUshortCollection.cs
- EntityDataSourceWrapperCollection.cs
- SpellerInterop.cs
- QueryResultOp.cs
- DBNull.cs
- PrimitiveType.cs
- Literal.cs
- ContextBase.cs
- PropertyItemInternal.cs
- TaskForm.cs
- DLinqTableProvider.cs
- SecurityUtils.cs
- Matrix.cs