Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / documents / DocumentPageHost.cs / 1305600 / DocumentPageHost.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: DocumentPageHost.cs
//
// Description: Provides a view port for a page of content for a DocumentPage.
//
//---------------------------------------------------------------------------
using System;
using System.Windows; // UIElement
using System.Windows.Media; // Visual
namespace MS.Internal.Documents
{
///
/// Provides a view port for a page of content for a DocumentPage.
///
internal class DocumentPageHost : FrameworkElement
{
//-------------------------------------------------------------------
//
// Constructors
//
//-------------------------------------------------------------------
#region Constructors
///
/// Create an instance of a DocumentPageHost.
///
internal DocumentPageHost()
: base()
{
}
#endregion Constructors
//--------------------------------------------------------------------
//
// Internal Methods
//
//-------------------------------------------------------------------
#region Internal Methods
internal static void DisconnectPageVisual(Visual pageVisual)
{
// There might be a case where a visual associated with a page was
// inserted to a visual tree before. It got removed later, but GC did not
// destroy its parent yet. To workaround this case always check for the parent
// of page visual and disconnect it, when necessary.
Visual currentParent = VisualTreeHelper.GetParent(pageVisual) as Visual;
if (currentParent != null)
{
ContainerVisual pageVisualHost = currentParent as ContainerVisual;
if (pageVisualHost == null)
throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
DocumentPageHost docPageHost = VisualTreeHelper.GetParent(pageVisualHost) as DocumentPageHost;
if (docPageHost == null)
throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
docPageHost.PageVisual = null;
}
}
#endregion Internal Methods
//--------------------------------------------------------------------
//
// Internal Properties
//
//--------------------------------------------------------------------
#region Internal Properties
///
/// Root of visual subtree hosted by this DocumentPageHost.
///
internal Visual PageVisual
{
get
{
return _pageVisual;
}
set
{
ContainerVisual pageVisualHost;
if (_pageVisual != null)
{
pageVisualHost = VisualTreeHelper.GetParent(_pageVisual) as ContainerVisual;
Invariant.Assert(pageVisualHost != null);
pageVisualHost.Children.Clear();
this.RemoveVisualChild(pageVisualHost);
}
_pageVisual = value;
if (_pageVisual != null)
{
pageVisualHost = new ContainerVisual();
this.AddVisualChild(pageVisualHost);
pageVisualHost.Children.Add(_pageVisual);
pageVisualHost.SetValue(FlowDirectionProperty, FlowDirection.LeftToRight);
}
}
}
///
/// Internal cached offset.
///
internal Point CachedOffset;
#endregion Internal Properties
#region VisualChildren
///
/// Derived class must implement to support Visual children. The method must return
/// the child at the specified index. Index must be between 0 and GetVisualChildrenCount-1.
///
/// By default a Visual does not have any children.
///
/// Remark:
/// During this virtual call it is not valid to modify the Visual tree.
///
protected override Visual GetVisualChild(int index)
{
if (index != 0 || _pageVisual == null)
{
throw new ArgumentOutOfRangeException("index", index, SR.Get(SRID.Visual_ArgumentOutOfRange));
}
return VisualTreeHelper.GetParent(_pageVisual) as Visual;
}
///
/// Derived classes override this property to enable the Visual code to enumerate
/// the Visual children. Derived classes need to return the number of children
/// from this method.
///
/// By default a Visual does not have any children.
///
/// Remark: During this virtual method the Visual tree must not be modified.
///
protected override int VisualChildrenCount
{
get { return _pageVisual != null ? 1 : 0; }
}
#endregion VisualChildren
private Visual _pageVisual;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: DocumentPageHost.cs
//
// Description: Provides a view port for a page of content for a DocumentPage.
//
//---------------------------------------------------------------------------
using System;
using System.Windows; // UIElement
using System.Windows.Media; // Visual
namespace MS.Internal.Documents
{
///
/// Provides a view port for a page of content for a DocumentPage.
///
internal class DocumentPageHost : FrameworkElement
{
//-------------------------------------------------------------------
//
// Constructors
//
//-------------------------------------------------------------------
#region Constructors
///
/// Create an instance of a DocumentPageHost.
///
internal DocumentPageHost()
: base()
{
}
#endregion Constructors
//--------------------------------------------------------------------
//
// Internal Methods
//
//-------------------------------------------------------------------
#region Internal Methods
internal static void DisconnectPageVisual(Visual pageVisual)
{
// There might be a case where a visual associated with a page was
// inserted to a visual tree before. It got removed later, but GC did not
// destroy its parent yet. To workaround this case always check for the parent
// of page visual and disconnect it, when necessary.
Visual currentParent = VisualTreeHelper.GetParent(pageVisual) as Visual;
if (currentParent != null)
{
ContainerVisual pageVisualHost = currentParent as ContainerVisual;
if (pageVisualHost == null)
throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
DocumentPageHost docPageHost = VisualTreeHelper.GetParent(pageVisualHost) as DocumentPageHost;
if (docPageHost == null)
throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
docPageHost.PageVisual = null;
}
}
#endregion Internal Methods
//--------------------------------------------------------------------
//
// Internal Properties
//
//--------------------------------------------------------------------
#region Internal Properties
///
/// Root of visual subtree hosted by this DocumentPageHost.
///
internal Visual PageVisual
{
get
{
return _pageVisual;
}
set
{
ContainerVisual pageVisualHost;
if (_pageVisual != null)
{
pageVisualHost = VisualTreeHelper.GetParent(_pageVisual) as ContainerVisual;
Invariant.Assert(pageVisualHost != null);
pageVisualHost.Children.Clear();
this.RemoveVisualChild(pageVisualHost);
}
_pageVisual = value;
if (_pageVisual != null)
{
pageVisualHost = new ContainerVisual();
this.AddVisualChild(pageVisualHost);
pageVisualHost.Children.Add(_pageVisual);
pageVisualHost.SetValue(FlowDirectionProperty, FlowDirection.LeftToRight);
}
}
}
///
/// Internal cached offset.
///
internal Point CachedOffset;
#endregion Internal Properties
#region VisualChildren
///
/// Derived class must implement to support Visual children. The method must return
/// the child at the specified index. Index must be between 0 and GetVisualChildrenCount-1.
///
/// By default a Visual does not have any children.
///
/// Remark:
/// During this virtual call it is not valid to modify the Visual tree.
///
protected override Visual GetVisualChild(int index)
{
if (index != 0 || _pageVisual == null)
{
throw new ArgumentOutOfRangeException("index", index, SR.Get(SRID.Visual_ArgumentOutOfRange));
}
return VisualTreeHelper.GetParent(_pageVisual) as Visual;
}
///
/// Derived classes override this property to enable the Visual code to enumerate
/// the Visual children. Derived classes need to return the number of children
/// from this method.
///
/// By default a Visual does not have any children.
///
/// Remark: During this virtual method the Visual tree must not be modified.
///
protected override int VisualChildrenCount
{
get { return _pageVisual != null ? 1 : 0; }
}
#endregion VisualChildren
private Visual _pageVisual;
}
}
// 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
- JoinElimination.cs
- TemplatedMailWebEventProvider.cs
- QuinticEase.cs
- SyndicationDeserializer.cs
- CodeIdentifier.cs
- wgx_exports.cs
- SelectedGridItemChangedEvent.cs
- SmiEventSink_Default.cs
- AxWrapperGen.cs
- MetadataSerializer.cs
- CompositeControl.cs
- HtmlControl.cs
- serverconfig.cs
- ExternalException.cs
- SystemColors.cs
- HasCopySemanticsAttribute.cs
- MatrixTransform3D.cs
- SqlTypeConverter.cs
- KeyManager.cs
- XNodeValidator.cs
- DuplexChannelBinder.cs
- ContainerAction.cs
- AdapterDictionary.cs
- SqlCommandSet.cs
- HashHelpers.cs
- ClockGroup.cs
- ImageSource.cs
- UnknownBitmapEncoder.cs
- RuntimeCompatibilityAttribute.cs
- HtmlCalendarAdapter.cs
- RNGCryptoServiceProvider.cs
- StatusBarAutomationPeer.cs
- VarRefManager.cs
- SmtpNegotiateAuthenticationModule.cs
- SevenBitStream.cs
- Pen.cs
- oledbmetadatacollectionnames.cs
- ThreadExceptionEvent.cs
- CompilerErrorCollection.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- SqlFactory.cs
- Utils.cs
- OdbcConnectionOpen.cs
- TextBreakpoint.cs
- LinqDataSourceValidationException.cs
- DataListItemEventArgs.cs
- TextRangeSerialization.cs
- DataGridViewComboBoxCell.cs
- DelegateTypeInfo.cs
- ThreadPoolTaskScheduler.cs
- CodeAttributeArgument.cs
- GetPageCompletedEventArgs.cs
- HttpRequest.cs
- DeferredTextReference.cs
- SerializeAbsoluteContext.cs
- Oci.cs
- SecurityTokenValidationException.cs
- RoutingUtilities.cs
- Transactions.cs
- LambdaCompiler.Statements.cs
- RepeatBehaviorConverter.cs
- _TLSstream.cs
- UnsignedPublishLicense.cs
- XmlEventCache.cs
- FastEncoder.cs
- XDeferredAxisSource.cs
- SimpleParser.cs
- ColumnPropertiesGroup.cs
- HandlerFactoryWrapper.cs
- SigningCredentials.cs
- HwndStylusInputProvider.cs
- FormViewPagerRow.cs
- EncodingNLS.cs
- LocalIdKeyIdentifierClause.cs
- SyndicationElementExtensionCollection.cs
- RecognitionEventArgs.cs
- DocumentScope.cs
- IndividualDeviceConfig.cs
- X509Utils.cs
- HierarchicalDataTemplate.cs
- GridViewRowPresenterBase.cs
- ReferentialConstraint.cs
- RequestResizeEvent.cs
- ErrorRuntimeConfig.cs
- SQLBytesStorage.cs
- EventlogProvider.cs
- Util.cs
- EdmToObjectNamespaceMap.cs
- TextRangeEditLists.cs
- SQLMembershipProvider.cs
- DashStyle.cs
- Polygon.cs
- HtmlMeta.cs
- ThemeableAttribute.cs
- TraceSection.cs
- TextEditorLists.cs
- FormViewDeleteEventArgs.cs
- CqlLexerHelpers.cs
- WebFormsRootDesigner.cs
- ExtensionDataObject.cs