Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / SizeChangedEventArgs.cs / 1 / 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
- TextSelectionHighlightLayer.cs
- SmiMetaDataProperty.cs
- StringFunctions.cs
- ContentIterators.cs
- CheckedPointers.cs
- RawStylusActions.cs
- SystemFonts.cs
- XmlMapping.cs
- Base64Decoder.cs
- DataGridSortCommandEventArgs.cs
- TCPListener.cs
- EraserBehavior.cs
- IntSecurity.cs
- CompilerScope.Storage.cs
- Region.cs
- Attribute.cs
- CompiledQueryCacheKey.cs
- QueryHandler.cs
- MenuItemAutomationPeer.cs
- RootBrowserWindowAutomationPeer.cs
- Select.cs
- ComponentChangingEvent.cs
- Clipboard.cs
- FrameworkContentElement.cs
- ConstantExpression.cs
- InputQueue.cs
- TextTrailingWordEllipsis.cs
- DesignTimeVisibleAttribute.cs
- ExceptionValidationRule.cs
- XmlnsCompatibleWithAttribute.cs
- HybridDictionary.cs
- DrawTreeNodeEventArgs.cs
- DataFieldEditor.cs
- WinEventWrap.cs
- WebPartChrome.cs
- Function.cs
- TypeConverter.cs
- DbConnectionPoolIdentity.cs
- StatusBarItemAutomationPeer.cs
- CryptoApi.cs
- CodeArrayCreateExpression.cs
- DataGridViewCellCancelEventArgs.cs
- XmlIterators.cs
- Codec.cs
- FrameSecurityDescriptor.cs
- TemplateApplicationHelper.cs
- Formatter.cs
- ListBoxItemAutomationPeer.cs
- SoapSchemaMember.cs
- Range.cs
- ControlFilterExpression.cs
- HttpModuleActionCollection.cs
- PropertyOrder.cs
- WindowInteropHelper.cs
- HttpListenerPrefixCollection.cs
- VolatileEnlistmentMultiplexing.cs
- CommonRemoteMemoryBlock.cs
- Single.cs
- AnimationClockResource.cs
- PropertyEmitterBase.cs
- HttpListenerElement.cs
- ThemeDirectoryCompiler.cs
- Attributes.cs
- InkCanvasInnerCanvas.cs
- WindowsIdentity.cs
- MarkupObject.cs
- AssemblyBuilderData.cs
- ScriptingProfileServiceSection.cs
- PropertyEmitter.cs
- RoleService.cs
- Walker.cs
- ToolStripDropDownItem.cs
- Decimal.cs
- ForceCopyBuildProvider.cs
- InputLangChangeRequestEvent.cs
- FontStretches.cs
- SpeakCompletedEventArgs.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ProfileBuildProvider.cs
- HTMLTagNameToTypeMapper.cs
- SimpleFieldTemplateFactory.cs
- ACE.cs
- Vector.cs
- ColumnMapVisitor.cs
- GlobalizationAssembly.cs
- XmlAutoDetectWriter.cs
- AutoResetEvent.cs
- ApplicationFileCodeDomTreeGenerator.cs
- TypeBuilder.cs
- ClassData.cs
- AttributeInfo.cs
- TerminatorSinks.cs
- WaitHandle.cs
- ProtocolInformationReader.cs
- SettingsProviderCollection.cs
- BindingSource.cs
- UIElementPropertyUndoUnit.cs
- RecordsAffectedEventArgs.cs
- CommentEmitter.cs
- SchemaMapping.cs