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
- RemotingConfiguration.cs
- ApplicationTrust.cs
- EnumerableRowCollectionExtensions.cs
- HttpProfileBase.cs
- HandlerBase.cs
- LocatorBase.cs
- EncodingDataItem.cs
- DataBindingExpressionBuilder.cs
- DataControlPagerLinkButton.cs
- DES.cs
- PermissionSetTriple.cs
- CharacterMetricsDictionary.cs
- GridErrorDlg.cs
- BaseCAMarshaler.cs
- ListControl.cs
- IChannel.cs
- HttpsTransportElement.cs
- dbdatarecord.cs
- ListBindingConverter.cs
- FillRuleValidation.cs
- IsolatedStoragePermission.cs
- SoapReflectionImporter.cs
- WebBrowserPermission.cs
- TypeToTreeConverter.cs
- ListDictionaryInternal.cs
- DataGridRelationshipRow.cs
- DesigntimeLicenseContext.cs
- Point3DCollectionConverter.cs
- DataGridTable.cs
- SoapHeaders.cs
- ExceptionRoutedEventArgs.cs
- ChangeBlockUndoRecord.cs
- AssociativeAggregationOperator.cs
- JavaScriptSerializer.cs
- ListSortDescription.cs
- TransferMode.cs
- XmlImplementation.cs
- SessionPageStateSection.cs
- WindowsListViewItem.cs
- AttachedPropertyBrowsableAttribute.cs
- Win32.cs
- FacetDescriptionElement.cs
- XmlSignificantWhitespace.cs
- ContainerControl.cs
- ListInitExpression.cs
- DigitShape.cs
- LogStore.cs
- PostBackTrigger.cs
- EventRouteFactory.cs
- Repeater.cs
- PlaceHolder.cs
- HttpListenerResponse.cs
- SessionEndingCancelEventArgs.cs
- Win32MouseDevice.cs
- TreeViewImageIndexConverter.cs
- DbMetaDataFactory.cs
- IfJoinedCondition.cs
- ManualResetEventSlim.cs
- PerfService.cs
- CompilerParameters.cs
- WindowsListViewGroup.cs
- PointLightBase.cs
- HttpsChannelFactory.cs
- CompoundFileReference.cs
- UIntPtr.cs
- Module.cs
- WebPartAuthorizationEventArgs.cs
- DesignerWidgets.cs
- WebServiceReceive.cs
- DesignerLoader.cs
- ReadOnlyPermissionSet.cs
- OperationPickerDialog.designer.cs
- HtmlTitle.cs
- GlyphManager.cs
- SiteMapNode.cs
- ButtonAutomationPeer.cs
- TemplatedMailWebEventProvider.cs
- TableCell.cs
- OdbcCommandBuilder.cs
- DataServiceRequestOfT.cs
- DeviceContext2.cs
- NonClientArea.cs
- ChannelAcceptor.cs
- BitStack.cs
- StreamGeometry.cs
- DesignerOptionService.cs
- CellPartitioner.cs
- CultureSpecificCharacterBufferRange.cs
- SimpleType.cs
- CollectionContainer.cs
- SplashScreen.cs
- GeneralTransform3D.cs
- XmlNode.cs
- CallbackHandler.cs
- IPGlobalProperties.cs
- PreviewPageInfo.cs
- ProfileModule.cs
- altserialization.cs
- OpenTypeLayoutCache.cs
- CodePageEncoding.cs