Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / SizeChangedEventArgs.cs / 1305600 / SizeChangedEventArgs.cs
using System;
namespace System.Windows
{
///
/// The SizeChangedEventArgs class is used by SizeChangedEventHandler.
/// This handler is used for ComputedWidthChanged and ComputedHeightChanged events
/// on UIElement.
///
public class SizeChangedEventArgs : RoutedEventArgs
{
///
/// Initializes a new instance of the SizeChangedEventArgs class.
///
///
/// The UIElement which has its size changed by layout engine/>.
///
///
/// The SizeChangeInfo that is used by .
///
internal SizeChangedEventArgs(UIElement element, SizeChangedInfo info)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
if (element == null)
{
throw new ArgumentNullException("element");
}
_element = element;
_previousSize = info.PreviousSize;
if(info.WidthChanged) _bits |= _widthChangedBit;
if(info.HeightChanged) _bits |= _heightChangedBit;
}
///
/// Read-only access to the previous Size
///
public Size PreviousSize
{
get { return _previousSize; }
}
///
/// Read-only access to the new Size
///
public Size NewSize
{
get { return _element.RenderSize; }
}
///
/// Read-only access to the flag indicating that Width component of the size changed.
/// Note that due to double math
/// effects, the it may be (previousSize.Width != newSize.Width) and widthChanged = true.
/// This may happen in layout when sizes of objects are fluctuating because of a precision "jitter" of
/// the input parameters, but the overall scene is considered to be "the same" so no visible changes
/// will be detected. Typically, the handler of SizeChangedEvent should check this bit to avoid
/// invalidation of layout if the dimension didn't change.
///
public bool WidthChanged
{
get { return ((_bits & _widthChangedBit) != 0); }
}
///
/// Read-only access to the flag indicating that Height component of the size changed.
/// Note that due to double math
/// effects, the it may be (previousSize.Height != newSize.Height) and heightChanged = true.
/// This may happen in layout when sizes of objects are fluctuating because of a precision "jitter" of
/// the input parameters, but the overall scene is considered to be "the same" so no visible changes
/// will be detected. Typically, the handler of SizeChangedEvent should check this bit to avoid
/// invalidation of layout if the dimension didn't change.
///
public bool HeightChanged
{
get { return ((_bits & _heightChangedBit) != 0); }
}
private Size _previousSize;
private UIElement _element;
private byte _bits;
private static byte _widthChangedBit = 0x1;
private static byte _heightChangedBit = 0x2;
///
/// The mechanism used to call the type-specific handler on the
/// target.
///
///
/// The generic handler to call in a type-specific way.
///
///
/// The target to call the handler on.
///
///
protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget)
{
SizeChangedEventHandler handler = (SizeChangedEventHandler) genericHandler;
handler(genericTarget, this);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
namespace System.Windows
{
///
/// The SizeChangedEventArgs class is used by SizeChangedEventHandler.
/// This handler is used for ComputedWidthChanged and ComputedHeightChanged events
/// on UIElement.
///
public class SizeChangedEventArgs : RoutedEventArgs
{
///
/// Initializes a new instance of the SizeChangedEventArgs class.
///
///
/// The UIElement which has its size changed by layout engine/>.
///
///
/// The SizeChangeInfo that is used by .
///
internal SizeChangedEventArgs(UIElement element, SizeChangedInfo info)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
if (element == null)
{
throw new ArgumentNullException("element");
}
_element = element;
_previousSize = info.PreviousSize;
if(info.WidthChanged) _bits |= _widthChangedBit;
if(info.HeightChanged) _bits |= _heightChangedBit;
}
///
/// Read-only access to the previous Size
///
public Size PreviousSize
{
get { return _previousSize; }
}
///
/// Read-only access to the new Size
///
public Size NewSize
{
get { return _element.RenderSize; }
}
///
/// Read-only access to the flag indicating that Width component of the size changed.
/// Note that due to double math
/// effects, the it may be (previousSize.Width != newSize.Width) and widthChanged = true.
/// This may happen in layout when sizes of objects are fluctuating because of a precision "jitter" of
/// the input parameters, but the overall scene is considered to be "the same" so no visible changes
/// will be detected. Typically, the handler of SizeChangedEvent should check this bit to avoid
/// invalidation of layout if the dimension didn't change.
///
public bool WidthChanged
{
get { return ((_bits & _widthChangedBit) != 0); }
}
///
/// Read-only access to the flag indicating that Height component of the size changed.
/// Note that due to double math
/// effects, the it may be (previousSize.Height != newSize.Height) and heightChanged = true.
/// This may happen in layout when sizes of objects are fluctuating because of a precision "jitter" of
/// the input parameters, but the overall scene is considered to be "the same" so no visible changes
/// will be detected. Typically, the handler of SizeChangedEvent should check this bit to avoid
/// invalidation of layout if the dimension didn't change.
///
public bool HeightChanged
{
get { return ((_bits & _heightChangedBit) != 0); }
}
private Size _previousSize;
private UIElement _element;
private byte _bits;
private static byte _widthChangedBit = 0x1;
private static byte _heightChangedBit = 0x2;
///
/// The mechanism used to call the type-specific handler on the
/// target.
///
///
/// The generic handler to call in a type-specific way.
///
///
/// The target to call the handler on.
///
///
protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget)
{
SizeChangedEventHandler handler = (SizeChangedEventHandler) genericHandler;
handler(genericTarget, this);
}
}
}
// 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
- CalendarAutoFormatDialog.cs
- LinearGradientBrush.cs
- MatrixAnimationUsingKeyFrames.cs
- RootNamespaceAttribute.cs
- CodeCastExpression.cs
- AnonymousIdentificationSection.cs
- X509ClientCertificateCredentialsElement.cs
- NamespaceListProperty.cs
- ErrorFormatterPage.cs
- QueryOptionExpression.cs
- DataExpression.cs
- SizeConverter.cs
- Matrix.cs
- SwitchLevelAttribute.cs
- DocComment.cs
- handlecollector.cs
- PixelFormat.cs
- LongAverageAggregationOperator.cs
- ExpandableObjectConverter.cs
- ArglessEventHandlerProxy.cs
- FloatAverageAggregationOperator.cs
- SignedXmlDebugLog.cs
- CompositeControl.cs
- ButtonFlatAdapter.cs
- SqlEnums.cs
- SiteMapSection.cs
- EntityDataSourceSelectingEventArgs.cs
- FormViewUpdateEventArgs.cs
- CodeDirectoryCompiler.cs
- DataSetUtil.cs
- FaultHandlingFilter.cs
- GenericRootAutomationPeer.cs
- WebPartTransformerCollection.cs
- DbXmlEnabledProviderManifest.cs
- WebPartConnectVerb.cs
- UnsafeNativeMethodsTablet.cs
- SynchronizationLockException.cs
- LinkLabelLinkClickedEvent.cs
- webproxy.cs
- BindingSourceDesigner.cs
- Accessible.cs
- SimpleLine.cs
- ClientConfigurationSystem.cs
- AuthenticationModulesSection.cs
- TextTreeTextBlock.cs
- MessageDescriptionCollection.cs
- FileUtil.cs
- LineVisual.cs
- ConfigXmlWhitespace.cs
- userdatakeys.cs
- PerformanceCounterScope.cs
- RegionData.cs
- KeyTimeConverter.cs
- XsltArgumentList.cs
- SourceElementsCollection.cs
- LexicalChunk.cs
- EditBehavior.cs
- TypeUsageBuilder.cs
- IDispatchConstantAttribute.cs
- Ipv6Element.cs
- GridItem.cs
- SafeEventHandle.cs
- FaultPropagationQuery.cs
- GridViewCancelEditEventArgs.cs
- ValidatorAttribute.cs
- InstanceNameConverter.cs
- SpotLight.cs
- AspCompat.cs
- DefinitionUpdate.cs
- XmlAttributeCollection.cs
- PropertyGridCommands.cs
- ListGeneralPage.cs
- ListItemCollection.cs
- JsonSerializer.cs
- StandardOleMarshalObject.cs
- NameValueConfigurationElement.cs
- SineEase.cs
- SoapFormatter.cs
- XamlBuildTaskServices.cs
- IndexerNameAttribute.cs
- DefaultHttpHandler.cs
- EntitySqlQueryBuilder.cs
- BookmarkEventArgs.cs
- ArrayElementGridEntry.cs
- StringUtil.cs
- QilName.cs
- BoolExpr.cs
- ServiceReference.cs
- InternalControlCollection.cs
- ProtectedConfiguration.cs
- GridEntryCollection.cs
- ContainerTracking.cs
- ChineseLunisolarCalendar.cs
- AuthorizationContext.cs
- ProfileModule.cs
- UpdateTracker.cs
- XPathNodeInfoAtom.cs
- HttpConfigurationSystem.cs
- Block.cs
- ByteConverter.cs