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
- ImageFormat.cs
- RemoteWebConfigurationHostStream.cs
- StandardOleMarshalObject.cs
- BidPrivateBase.cs
- ToolStripDesignerAvailabilityAttribute.cs
- FontStyleConverter.cs
- DictionarySectionHandler.cs
- FontCollection.cs
- ContentPlaceHolder.cs
- PersianCalendar.cs
- ObjectListComponentEditor.cs
- DebuggerAttributes.cs
- VirtualPathProvider.cs
- WindowsListViewScroll.cs
- Token.cs
- XmlIgnoreAttribute.cs
- Logging.cs
- DesignTimeTemplateParser.cs
- OpenFileDialog.cs
- XmlTypeMapping.cs
- XamlToRtfParser.cs
- AndCondition.cs
- EncoderParameters.cs
- List.cs
- StringArrayConverter.cs
- remotingproxy.cs
- AutoCompleteStringCollection.cs
- TargetInvocationException.cs
- ResourceSetExpression.cs
- GPRECTF.cs
- AsyncCompletedEventArgs.cs
- SizeF.cs
- TrustSection.cs
- SvcMapFileLoader.cs
- CalendarAutoFormatDialog.cs
- PointAnimationUsingKeyFrames.cs
- DynamicContractTypeBuilder.cs
- RemoteArgument.cs
- VectorCollectionValueSerializer.cs
- CookieProtection.cs
- ScriptingWebServicesSectionGroup.cs
- DataGridTemplateColumn.cs
- MenuAdapter.cs
- GeneralTransform2DTo3DTo2D.cs
- ExclusiveTcpListener.cs
- PerformanceCounterPermissionAttribute.cs
- RequestCacheEntry.cs
- XmlDocument.cs
- HTTPNotFoundHandler.cs
- PartialList.cs
- DesignerDataSourceView.cs
- RowToParametersTransformer.cs
- XmlSchemaType.cs
- SoapDocumentServiceAttribute.cs
- Helper.cs
- EDesignUtil.cs
- TextViewDesigner.cs
- Visitors.cs
- FileSystemWatcher.cs
- TextViewSelectionProcessor.cs
- TabControl.cs
- WebReferencesBuildProvider.cs
- HttpFormatExtensions.cs
- XmlUtf8RawTextWriter.cs
- RelatedImageListAttribute.cs
- WebBrowserPermission.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- BooleanKeyFrameCollection.cs
- Tuple.cs
- ObjectPersistData.cs
- Queue.cs
- TypefaceCollection.cs
- SqlDataSourceCommandEventArgs.cs
- TextCompositionManager.cs
- Span.cs
- IfAction.cs
- TargetInvocationException.cs
- ValidationHelpers.cs
- Panel.cs
- SiteMapPath.cs
- FileDialogCustomPlace.cs
- DataBinder.cs
- Transform.cs
- DesignerRegion.cs
- FormsAuthenticationEventArgs.cs
- ColumnReorderedEventArgs.cs
- SourceInterpreter.cs
- ObjectDataSourceEventArgs.cs
- PageTheme.cs
- SizeIndependentAnimationStorage.cs
- SecurityState.cs
- PageClientProxyGenerator.cs
- SqlDataSourceView.cs
- PageThemeParser.cs
- CompModSwitches.cs
- ZipIOExtraFieldPaddingElement.cs
- GeneratedCodeAttribute.cs
- MatrixUtil.cs
- ModelPropertyDescriptor.cs
- SqlUDTStorage.cs