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
- EventDescriptor.cs
- Wizard.cs
- Matrix3DValueSerializer.cs
- Opcode.cs
- IgnoreSection.cs
- SafeMemoryMappedViewHandle.cs
- ColumnWidthChangingEvent.cs
- GenerateTemporaryTargetAssembly.cs
- RequiredAttributeAttribute.cs
- PackWebRequest.cs
- ThicknessAnimation.cs
- Repeater.cs
- GridViewHeaderRowPresenter.cs
- UserPrincipalNameElement.cs
- RectangleGeometry.cs
- ListChangedEventArgs.cs
- ObjectReaderCompiler.cs
- BaseProcessor.cs
- SimpleWorkerRequest.cs
- Compilation.cs
- FixedSOMLineCollection.cs
- QilGeneratorEnv.cs
- metrodevice.cs
- AddingNewEventArgs.cs
- TemplateBamlTreeBuilder.cs
- SqlDataAdapter.cs
- TypeConverterHelper.cs
- Clause.cs
- ConfigurationSectionCollection.cs
- InheritablePropertyChangeInfo.cs
- VirtualizingStackPanel.cs
- TableLayoutSettings.cs
- _UriTypeConverter.cs
- QilIterator.cs
- TableRowsCollectionEditor.cs
- SyndicationSerializer.cs
- StringBlob.cs
- EventLogWatcher.cs
- GeometryModel3D.cs
- AnonymousIdentificationModule.cs
- NameObjectCollectionBase.cs
- ReadOnlyKeyedCollection.cs
- XPathDescendantIterator.cs
- UIElementHelper.cs
- NonBatchDirectoryCompiler.cs
- ConfigUtil.cs
- WindowsAltTab.cs
- HtmlTableCellCollection.cs
- AuthorizationRule.cs
- InfocardInteractiveChannelInitializer.cs
- CompositeControl.cs
- XmlSchemaSet.cs
- TableHeaderCell.cs
- MonitoringDescriptionAttribute.cs
- METAHEADER.cs
- XmlSchemaObjectTable.cs
- BitmapMetadataBlob.cs
- XhtmlMobileTextWriter.cs
- EntityParameterCollection.cs
- MessageBox.cs
- QilCloneVisitor.cs
- XmlCompatibilityReader.cs
- RelativeSource.cs
- MarshalDirectiveException.cs
- UInt16.cs
- MetafileHeaderEmf.cs
- SiteMapDataSourceView.cs
- AbandonedMutexException.cs
- AppDomain.cs
- SystemIPv4InterfaceProperties.cs
- SynthesizerStateChangedEventArgs.cs
- DictationGrammar.cs
- WhitespaceSignificantCollectionAttribute.cs
- EntityDataSourceChangedEventArgs.cs
- TextEmbeddedObject.cs
- JoinSymbol.cs
- Repeater.cs
- FlagsAttribute.cs
- AnnouncementEventArgs.cs
- ProcessProtocolHandler.cs
- Pointer.cs
- ChannelReliableSession.cs
- InternalRelationshipCollection.cs
- BamlBinaryWriter.cs
- DataSourceControlBuilder.cs
- TextParagraphCache.cs
- CompModSwitches.cs
- Transform.cs
- FakeModelPropertyImpl.cs
- ItemContainerProviderWrapper.cs
- UnSafeCharBuffer.cs
- CriticalExceptions.cs
- SuppressMessageAttribute.cs
- ObjectList.cs
- ManagementPath.cs
- ToolBarDesigner.cs
- SafeArrayTypeMismatchException.cs
- HyperLinkDesigner.cs
- DataGridViewTopLeftHeaderCell.cs
- ForEachAction.cs