Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SerialStream.cs
- AsynchronousChannelMergeEnumerator.cs
- StructuredTypeEmitter.cs
- EventMappingSettings.cs
- CollectionDataContractAttribute.cs
- MinimizableAttributeTypeConverter.cs
- InheritedPropertyChangedEventArgs.cs
- ValueQuery.cs
- TextEncodedRawTextWriter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- TypeBuilder.cs
- NumberEdit.cs
- ButtonColumn.cs
- ComboBox.cs
- SignatureResourceHelper.cs
- MemberExpressionHelper.cs
- NonVisualControlAttribute.cs
- BamlLocalizer.cs
- BindingElementCollection.cs
- TypedMessageConverter.cs
- TableItemPatternIdentifiers.cs
- SByteConverter.cs
- ListenerBinder.cs
- XamlSerializerUtil.cs
- RouteItem.cs
- PageParserFilter.cs
- XMLUtil.cs
- ScrollBarRenderer.cs
- XmlWrappingReader.cs
- WmlFormAdapter.cs
- SystemTcpStatistics.cs
- Container.cs
- DataShape.cs
- PersonalizationProviderCollection.cs
- DesignTimeHTMLTextWriter.cs
- BuildResult.cs
- Dump.cs
- LogicalExpressionEditor.cs
- _IPv4Address.cs
- FileDetails.cs
- OleDbCommand.cs
- ConnectorSelectionGlyph.cs
- GACMembershipCondition.cs
- DataControlCommands.cs
- xamlnodes.cs
- ActivationArguments.cs
- TrackingCondition.cs
- SpecialNameAttribute.cs
- ToolStripLabel.cs
- DocumentSequenceHighlightLayer.cs
- StateItem.cs
- InlineCategoriesDocument.cs
- Font.cs
- LocationSectionRecord.cs
- Qualifier.cs
- SafeRegistryKey.cs
- ObsoleteAttribute.cs
- AdvancedBindingEditor.cs
- Rotation3D.cs
- SmiEventSink_Default.cs
- util.cs
- StringInfo.cs
- FixUp.cs
- DnsEndpointIdentity.cs
- X509CertificateTrustedIssuerElement.cs
- WebContext.cs
- WinFormsSecurity.cs
- ShaderEffect.cs
- NavigationProgressEventArgs.cs
- RemotingServices.cs
- SignedPkcs7.cs
- QueryConverter.cs
- ListenerElementsCollection.cs
- RNGCryptoServiceProvider.cs
- Nullable.cs
- GridViewCommandEventArgs.cs
- Propagator.Evaluator.cs
- ObjectItemConventionAssemblyLoader.cs
- FileIOPermission.cs
- LazyInitializer.cs
- PreProcessor.cs
- ScalarConstant.cs
- WebPartUtil.cs
- AnnotationDocumentPaginator.cs
- WmlImageAdapter.cs
- HttpListenerContext.cs
- EditCommandColumn.cs
- ControlCollection.cs
- CommandManager.cs
- TreeViewAutomationPeer.cs
- PaintValueEventArgs.cs
- HMACSHA384.cs
- SignatureToken.cs
- ZipIOExtraFieldPaddingElement.cs
- ModuleBuilder.cs
- TransformerInfo.cs
- RegexGroupCollection.cs
- LineMetrics.cs
- PropertyGridView.cs
- MemoryFailPoint.cs