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
- ListViewDataItem.cs
- AccessControlList.cs
- SqlCacheDependencyDatabase.cs
- AdjustableArrowCap.cs
- PartManifestEntry.cs
- TabPanel.cs
- CustomSignedXml.cs
- DispatchWrapper.cs
- SymmetricSecurityBindingElement.cs
- BevelBitmapEffect.cs
- MailAddressCollection.cs
- XmlCodeExporter.cs
- TraceSource.cs
- DataPointer.cs
- UITypeEditor.cs
- CodeDomSerializerBase.cs
- FormViewModeEventArgs.cs
- TraceXPathNavigator.cs
- XmlStreamStore.cs
- CategoryGridEntry.cs
- listitem.cs
- StrokeCollectionConverter.cs
- WebControl.cs
- ClientCultureInfo.cs
- DbConnectionOptions.cs
- JulianCalendar.cs
- FileChangeNotifier.cs
- DataGridCaption.cs
- Rotation3D.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- CacheOutputQuery.cs
- AutomationIdentifier.cs
- UserValidatedEventArgs.cs
- MessagePartDescriptionCollection.cs
- listitem.cs
- InkCanvasSelection.cs
- LayoutTableCell.cs
- XhtmlConformanceSection.cs
- XmlAnyElementAttributes.cs
- DateTimeConverter2.cs
- BamlLocalizableResource.cs
- ProtectedProviderSettings.cs
- Parser.cs
- Bits.cs
- UpDownEvent.cs
- ChildDocumentBlock.cs
- Transactions.cs
- BaseDataList.cs
- StylusPoint.cs
- RTLAwareMessageBox.cs
- CounterSetInstance.cs
- TemplateNameScope.cs
- Positioning.cs
- ContentElementAutomationPeer.cs
- PocoPropertyAccessorStrategy.cs
- ReadOnlyNameValueCollection.cs
- _AutoWebProxyScriptHelper.cs
- DataBindingExpressionBuilder.cs
- SrgsRule.cs
- DBDataPermission.cs
- FontInfo.cs
- DPCustomTypeDescriptor.cs
- OdbcCommandBuilder.cs
- TextBoxAutomationPeer.cs
- AutoGeneratedFieldProperties.cs
- ThicknessKeyFrameCollection.cs
- AnnouncementInnerClientCD1.cs
- ScrollPattern.cs
- DefaultExpression.cs
- contentDescriptor.cs
- assertwrapper.cs
- ScaleTransform3D.cs
- XmlElementList.cs
- DataGridViewCellMouseEventArgs.cs
- HttpCacheVaryByContentEncodings.cs
- FieldBuilder.cs
- MultiSelector.cs
- HttpClientCertificate.cs
- MultiPageTextView.cs
- DesignerSerializerAttribute.cs
- HelloMessageApril2005.cs
- SpeakCompletedEventArgs.cs
- ServiceProviders.cs
- HwndStylusInputProvider.cs
- BaseAddressPrefixFilterElementCollection.cs
- WebRequestModulesSection.cs
- WebHostUnsafeNativeMethods.cs
- CacheModeConverter.cs
- TextTreeTextElementNode.cs
- Rotation3DKeyFrameCollection.cs
- FixedFlowMap.cs
- GeneralTransform3DTo2DTo3D.cs
- XmlNodeList.cs
- RenderOptions.cs
- CheckedListBox.cs
- FileLevelControlBuilderAttribute.cs
- TimelineCollection.cs
- MethodToken.cs
- TakeOrSkipQueryOperator.cs
- SecurityUtils.cs