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 EventHandler Changing;
#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
- ParamArrayAttribute.cs
- RepeatBehavior.cs
- TheQuery.cs
- PathSegment.cs
- PostBackOptions.cs
- PlaceHolder.cs
- Attribute.cs
- ReadOnlyDataSource.cs
- ProfessionalColorTable.cs
- DbMetaDataFactory.cs
- BamlRecordHelper.cs
- Timeline.cs
- WebPartChrome.cs
- FlowLayoutPanel.cs
- TextParagraph.cs
- DataViewManagerListItemTypeDescriptor.cs
- RoutedEventConverter.cs
- InputMethodStateTypeInfo.cs
- fixedPageContentExtractor.cs
- BoolExpression.cs
- DataControlReferenceCollection.cs
- MaskedTextProvider.cs
- HwndStylusInputProvider.cs
- CardSpaceException.cs
- ThreadPool.cs
- ClientTargetCollection.cs
- ViewKeyConstraint.cs
- AsyncCodeActivityContext.cs
- WebPartPersonalization.cs
- Pair.cs
- PreviewPrintController.cs
- ByteStreamMessage.cs
- Double.cs
- ServiceDescriptionImporter.cs
- NativeMethods.cs
- CompressedStack.cs
- Border.cs
- ErrorInfoXmlDocument.cs
- WebBrowser.cs
- TextBoxBase.cs
- GlobalEventManager.cs
- DispatchWrapper.cs
- DesignerActionPanel.cs
- ServicePointManager.cs
- SafeHandle.cs
- CleanUpVirtualizedItemEventArgs.cs
- SqlBulkCopy.cs
- XhtmlBasicFormAdapter.cs
- RightsManagementInformation.cs
- SspiSafeHandles.cs
- ConsumerConnectionPointCollection.cs
- HierarchicalDataSourceIDConverter.cs
- ExpressionBindingCollection.cs
- COM2Properties.cs
- WpfXamlLoader.cs
- regiisutil.cs
- DataSourceCache.cs
- TextSerializer.cs
- ReadOnlyCollection.cs
- DesignerTransactionCloseEvent.cs
- ExecutionContext.cs
- DataIdProcessor.cs
- XmlHierarchyData.cs
- Bidi.cs
- ParsedAttributeCollection.cs
- HuffModule.cs
- JoinSymbol.cs
- XDeferredAxisSource.cs
- Item.cs
- Function.cs
- SecurityKeyIdentifierClause.cs
- QuestionEventArgs.cs
- RC2CryptoServiceProvider.cs
- HebrewCalendar.cs
- TypedReference.cs
- TextRange.cs
- WebRequest.cs
- ProjectionCamera.cs
- PointKeyFrameCollection.cs
- OrthographicCamera.cs
- Util.cs
- _ContextAwareResult.cs
- GenericParameterDataContract.cs
- Parser.cs
- basenumberconverter.cs
- ParserStreamGeometryContext.cs
- TemplateBindingExtensionConverter.cs
- SignedInfo.cs
- ResourceAssociationTypeEnd.cs
- DBDataPermission.cs
- PropertyInformation.cs
- NativeWindow.cs
- Span.cs
- NetStream.cs
- CalendarAutoFormatDialog.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SHA1CryptoServiceProvider.cs
- Executor.cs
- OracleLob.cs
- XmlObjectSerializerReadContextComplex.cs