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
- LinearGradientBrush.cs
- indexingfiltermarshaler.cs
- ToolStripArrowRenderEventArgs.cs
- LocatorPart.cs
- StorageRoot.cs
- ThreadInterruptedException.cs
- ImageInfo.cs
- NativeMethods.cs
- OleDbWrapper.cs
- DataColumn.cs
- MapPathBasedVirtualPathProvider.cs
- BCryptSafeHandles.cs
- RefType.cs
- RoutedUICommand.cs
- XmlSchemaSet.cs
- Point4D.cs
- __ComObject.cs
- GenericsInstances.cs
- NoneExcludedImageIndexConverter.cs
- CursorConverter.cs
- XhtmlBasicListAdapter.cs
- DataGridToolTip.cs
- DataGridViewTextBoxColumn.cs
- FilteredDataSetHelper.cs
- XmlDesignerDataSourceView.cs
- TreeViewItemAutomationPeer.cs
- XpsInterleavingPolicy.cs
- ColorTranslator.cs
- Point.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- ListViewGroup.cs
- TrackingValidationObjectDictionary.cs
- CheckableControlBaseAdapter.cs
- CollectionBase.cs
- ISFClipboardData.cs
- UrlMapping.cs
- SelectorAutomationPeer.cs
- WebMessageFormatHelper.cs
- RegexInterpreter.cs
- BackgroundWorker.cs
- ThreadExceptionEvent.cs
- ToolStripItemEventArgs.cs
- DBCSCodePageEncoding.cs
- WebPartDisplayMode.cs
- BamlTreeNode.cs
- OleDbException.cs
- RepeaterItemEventArgs.cs
- ControlCollection.cs
- WebPartDisplayMode.cs
- RadioButtonList.cs
- NetNamedPipeBindingElement.cs
- RangeValuePattern.cs
- MetadataImporter.cs
- GridItemPattern.cs
- MessageHeaderAttribute.cs
- EncoderNLS.cs
- TextEffect.cs
- WmlLinkAdapter.cs
- DBDataPermission.cs
- XPathNodeList.cs
- SqlInternalConnectionSmi.cs
- UriTemplateClientFormatter.cs
- ModelItemKeyValuePair.cs
- XmlSchemaAll.cs
- NavigatorOutput.cs
- DataControlExtensions.cs
- RowBinding.cs
- CompositeKey.cs
- BuildProviderCollection.cs
- Vector3DCollectionValueSerializer.cs
- CompilerGlobalScopeAttribute.cs
- SID.cs
- SectionVisual.cs
- MetabaseSettings.cs
- ProviderConnectionPointCollection.cs
- XmlSchemaComplexContent.cs
- SizeAnimationClockResource.cs
- SelectionItemProviderWrapper.cs
- FactoryId.cs
- KnownTypeAttribute.cs
- RuleValidation.cs
- DispatcherHookEventArgs.cs
- Baml2006ReaderSettings.cs
- Attributes.cs
- TypeConverterAttribute.cs
- LogPolicy.cs
- DisposableCollectionWrapper.cs
- DataGrid.cs
- PropertyReferenceExtension.cs
- XmlSchemaAttribute.cs
- ApplicationFileParser.cs
- Attributes.cs
- RadioButtonDesigner.cs
- ListCollectionView.cs
- HtmlDocument.cs
- PropertyChangingEventArgs.cs
- ProjectionCamera.cs
- ParseHttpDate.cs
- SqlNodeAnnotation.cs
- OutputWindow.cs