Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / Primitives / LayoutInformation.cs / 1305600 / LayoutInformation.cs
//------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, 2005 // // File: LayoutInformation // Spec: http://team/sites/Avalon/Specs/LayoutInformation%20class.doc //----------------------------------------------------------------------------- using System; using System.Windows.Media; using System.Windows.Threading; namespace System.Windows.Controls.Primitives { ////// This interface exposes additional layout information not exposed otherwise on FrameworkElement. /// This information is mostly used by the designer programs to produce additional visual clues for the user /// during interactive editing of the elements and layout properties. /// public static class LayoutInformation { private static void CheckArgument(FrameworkElement element) { if (element == null) { throw new ArgumentNullException("element"); } } ////// Returns the rectangle that represents Layout Slot - the layout partition reserved for the /// child by the layout parent. This info is in the coordinte system of the layout parent. /// public static Rect GetLayoutSlot(FrameworkElement element) { CheckArgument(element); return element.PreviousArrangeRect; } ////// Returns a geometry which was computed by layout for the child. This is generally a visible region of the child. /// Layout can compute automatic clip region when the child is larger then layout constraints or has ClipToBounds /// property set. Note that because of LayoutTransform, this could be a non-rectangular geometry. While general geometry is somewhat /// complex to operate with, it is possible to check if the Geometry returned is RectangularGeometry or, if not - use Geometry.Bounds /// property to get bounding box of the visible portion of the element. /// public static Geometry GetLayoutClip(FrameworkElement element) { CheckArgument(element); return element.GetLayoutClipInternal(); } ////// Returns a UIElement which was being processed by Layout Engine at the moment /// an unhandled exception casued Layout Engine to abandon the operation and unwind. /// Returns non-null result only for a period of time before next layout update is /// initiated. Can be examined from the application exception handler. /// /// The Dispatcher object that specifies the scope of operation. There is one Layout Engine per Dispatcher. public static UIElement GetLayoutExceptionElement(Dispatcher dispatcher) { if(dispatcher == null) throw new ArgumentNullException("dispatcher"); UIElement e = null; ContextLayoutManager lm = ContextLayoutManager.From(dispatcher); if(lm != null) e = lm.GetLastExceptionElement(); return e; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // Microsoft Avalon // Copyright (c) Microsoft Corporation, 2005 // // File: LayoutInformation // Spec: http://team/sites/Avalon/Specs/LayoutInformation%20class.doc //----------------------------------------------------------------------------- using System; using System.Windows.Media; using System.Windows.Threading; namespace System.Windows.Controls.Primitives { ////// This interface exposes additional layout information not exposed otherwise on FrameworkElement. /// This information is mostly used by the designer programs to produce additional visual clues for the user /// during interactive editing of the elements and layout properties. /// public static class LayoutInformation { private static void CheckArgument(FrameworkElement element) { if (element == null) { throw new ArgumentNullException("element"); } } ////// Returns the rectangle that represents Layout Slot - the layout partition reserved for the /// child by the layout parent. This info is in the coordinte system of the layout parent. /// public static Rect GetLayoutSlot(FrameworkElement element) { CheckArgument(element); return element.PreviousArrangeRect; } ////// Returns a geometry which was computed by layout for the child. This is generally a visible region of the child. /// Layout can compute automatic clip region when the child is larger then layout constraints or has ClipToBounds /// property set. Note that because of LayoutTransform, this could be a non-rectangular geometry. While general geometry is somewhat /// complex to operate with, it is possible to check if the Geometry returned is RectangularGeometry or, if not - use Geometry.Bounds /// property to get bounding box of the visible portion of the element. /// public static Geometry GetLayoutClip(FrameworkElement element) { CheckArgument(element); return element.GetLayoutClipInternal(); } ////// Returns a UIElement which was being processed by Layout Engine at the moment /// an unhandled exception casued Layout Engine to abandon the operation and unwind. /// Returns non-null result only for a period of time before next layout update is /// initiated. Can be examined from the application exception handler. /// /// The Dispatcher object that specifies the scope of operation. There is one Layout Engine per Dispatcher. public static UIElement GetLayoutExceptionElement(Dispatcher dispatcher) { if(dispatcher == null) throw new ArgumentNullException("dispatcher"); UIElement e = null; ContextLayoutManager lm = ContextLayoutManager.From(dispatcher); if(lm != null) e = lm.GetLastExceptionElement(); return e; } } } // 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
- ExpressionVisitorHelpers.cs
- CacheHelper.cs
- ByteStreamGeometryContext.cs
- FrameworkElementFactory.cs
- TableAutomationPeer.cs
- SQLDouble.cs
- XPathDocumentNavigator.cs
- RootNamespaceAttribute.cs
- PartitionedStreamMerger.cs
- ExpressionPrinter.cs
- TextEffectResolver.cs
- AutomationPeer.cs
- InputBinder.cs
- ByteStreamMessageEncodingElement.cs
- SafeViewOfFileHandle.cs
- DescendantBaseQuery.cs
- TextRangeAdaptor.cs
- DllNotFoundException.cs
- SqlNodeAnnotations.cs
- AlignmentYValidation.cs
- DataKey.cs
- ProcessModelSection.cs
- SrgsRuleRef.cs
- SettingsPropertyValue.cs
- DocumentNUp.cs
- PageSettings.cs
- NodeFunctions.cs
- PEFileEvidenceFactory.cs
- EarlyBoundInfo.cs
- PrincipalPermission.cs
- Filter.cs
- CodeNamespace.cs
- CompilerLocalReference.cs
- FilteredXmlReader.cs
- TraceContext.cs
- TaskForm.cs
- LinqExpressionNormalizer.cs
- EventLogEntry.cs
- EndEvent.cs
- DesignerTextViewAdapter.cs
- lengthconverter.cs
- CultureInfo.cs
- CodeGenerator.cs
- NetStream.cs
- CounterSample.cs
- TreeBuilderXamlTranslator.cs
- AsymmetricKeyExchangeDeformatter.cs
- DataGridViewLinkCell.cs
- IndexedGlyphRun.cs
- ObjectDataSourceView.cs
- CharAnimationBase.cs
- EDesignUtil.cs
- XamlTypeMapper.cs
- HeaderedItemsControl.cs
- ObjectQueryState.cs
- InkCanvasSelection.cs
- MemberCollection.cs
- SafeProcessHandle.cs
- StorageComplexTypeMapping.cs
- DesignerExtenders.cs
- dataSvcMapFileLoader.cs
- AddInIpcChannel.cs
- ProfileManager.cs
- AccessDataSource.cs
- MatrixConverter.cs
- _AcceptOverlappedAsyncResult.cs
- MasterPage.cs
- NonVisualControlAttribute.cs
- TypefaceMap.cs
- NativeMethods.cs
- HwndSource.cs
- ImageIndexConverter.cs
- SizeF.cs
- TreeNodeEventArgs.cs
- PrinterUnitConvert.cs
- LocalClientSecuritySettingsElement.cs
- SymDocumentType.cs
- ChildTable.cs
- FrugalMap.cs
- TypeUnloadedException.cs
- Opcode.cs
- HttpProcessUtility.cs
- Matrix.cs
- ElementHostAutomationPeer.cs
- HttpHandlersSection.cs
- IChannel.cs
- PickBranchDesigner.xaml.cs
- xdrvalidator.cs
- KeyGestureValueSerializer.cs
- OrderedHashRepartitionEnumerator.cs
- DoubleAnimation.cs
- SourceFilter.cs
- ContainerParaClient.cs
- InputMethodStateTypeInfo.cs
- MarkupCompilePass1.cs
- UnmanagedHandle.cs
- ILGenerator.cs
- TextCompositionEventArgs.cs
- ExpressionCopier.cs
- UnauthorizedWebPart.cs