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
- __TransparentProxy.cs
- SessionState.cs
- ClientBuildManagerCallback.cs
- UnicodeEncoding.cs
- RootDesignerSerializerAttribute.cs
- WorkflowDesigner.cs
- DataGridViewCellLinkedList.cs
- BatchParser.cs
- DeviceFiltersSection.cs
- X509Chain.cs
- TreeBuilder.cs
- MembershipSection.cs
- ListView.cs
- SafeNativeMethods.cs
- DataServiceQuery.cs
- DictionaryTraceRecord.cs
- AddInServer.cs
- ParserStreamGeometryContext.cs
- WebHttpBinding.cs
- DesignerActionUIService.cs
- RangeValuePatternIdentifiers.cs
- TargetException.cs
- Parser.cs
- ArraySubsetEnumerator.cs
- DataGridViewRowsRemovedEventArgs.cs
- DescendentsWalkerBase.cs
- EditorAttribute.cs
- TextRunCache.cs
- BooleanSwitch.cs
- XmlSchemaSimpleTypeRestriction.cs
- DataListItem.cs
- TrimSurroundingWhitespaceAttribute.cs
- future.cs
- Brush.cs
- DateTime.cs
- ObjRef.cs
- WindowsMenu.cs
- TextEditorSelection.cs
- Positioning.cs
- DirectoryNotFoundException.cs
- DataList.cs
- AliasExpr.cs
- BmpBitmapDecoder.cs
- BehaviorEditorPart.cs
- SiteMapHierarchicalDataSourceView.cs
- DataGridViewComponentPropertyGridSite.cs
- VolatileEnlistmentState.cs
- SchemaImporterExtensionElementCollection.cs
- PathTooLongException.cs
- _CommandStream.cs
- XmlUtf8RawTextWriter.cs
- WebPartDisplayMode.cs
- ParamArrayAttribute.cs
- Type.cs
- TextProperties.cs
- FormViewInsertedEventArgs.cs
- NativeObjectSecurity.cs
- initElementDictionary.cs
- FileSystemWatcher.cs
- CodePrimitiveExpression.cs
- AdapterDictionary.cs
- XPathAxisIterator.cs
- ChtmlCalendarAdapter.cs
- PerspectiveCamera.cs
- HtmlHistory.cs
- DocumentPageView.cs
- selecteditemcollection.cs
- DataGridViewCellCollection.cs
- PointAnimationUsingPath.cs
- StringFreezingAttribute.cs
- Model3DGroup.cs
- Double.cs
- ObjectSet.cs
- Icon.cs
- WebResourceAttribute.cs
- XmlSchemas.cs
- X509Certificate.cs
- HotCommands.cs
- EntityWrapperFactory.cs
- TextRangeEdit.cs
- ConfigurationManagerInternalFactory.cs
- ModelPropertyCollectionImpl.cs
- NamespaceQuery.cs
- LoginAutoFormat.cs
- TextEditorDragDrop.cs
- KeyGestureValueSerializer.cs
- DecoderBestFitFallback.cs
- DocumentGrid.cs
- AbandonedMutexException.cs
- AsymmetricAlgorithm.cs
- ZoneButton.cs
- TypedElement.cs
- ColorConverter.cs
- InputLanguage.cs
- Point3DConverter.cs
- MbpInfo.cs
- RequestCacheManager.cs
- xml.cs
- DataRow.cs
- xmlglyphRunInfo.cs