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
- DataListItemCollection.cs
- _UriSyntax.cs
- StateMachineSubscriptionManager.cs
- ElementProxy.cs
- ControlPropertyNameConverter.cs
- RawStylusActions.cs
- InputLanguageCollection.cs
- Hyperlink.cs
- CursorConverter.cs
- Peer.cs
- InputLanguageSource.cs
- TextParagraphCache.cs
- MimeBasePart.cs
- TextElementEnumerator.cs
- DataGridSortCommandEventArgs.cs
- LinqDataSourceInsertEventArgs.cs
- Constants.cs
- StoreContentChangedEventArgs.cs
- DocumentPage.cs
- TreeViewItemAutomationPeer.cs
- GradientStop.cs
- MergablePropertyAttribute.cs
- WindowsListView.cs
- MetadataArtifactLoaderFile.cs
- DayRenderEvent.cs
- ConstantCheck.cs
- CompositeDataBoundControl.cs
- FrugalMap.cs
- AdobeCFFWrapper.cs
- UITypeEditor.cs
- DefaultClaimSet.cs
- OAVariantLib.cs
- TextParaClient.cs
- ScrollItemPattern.cs
- MdImport.cs
- Point3D.cs
- ChangeProcessor.cs
- EventProperty.cs
- WebDescriptionAttribute.cs
- ProxyWebPartConnectionCollection.cs
- WebScriptEnablingBehavior.cs
- AuthenticationModulesSection.cs
- FieldToken.cs
- MailBnfHelper.cs
- Tokenizer.cs
- DataQuery.cs
- JsonByteArrayDataContract.cs
- PathNode.cs
- PrintPageEvent.cs
- PropertyInformation.cs
- HostProtectionPermission.cs
- IdentityHolder.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- RegexRunnerFactory.cs
- PeerNameRegistration.cs
- CallSite.cs
- ValidationPropertyAttribute.cs
- BindToObject.cs
- OciLobLocator.cs
- DelayedRegex.cs
- Classification.cs
- NamespaceExpr.cs
- CorrelationInitializer.cs
- XmlWriter.cs
- Atom10FormatterFactory.cs
- DataGridTextBoxColumn.cs
- TrackingDataItem.cs
- TimeSpanSecondsConverter.cs
- SharedPersonalizationStateInfo.cs
- ValuePatternIdentifiers.cs
- DocumentOrderQuery.cs
- AddToCollection.cs
- ResXResourceReader.cs
- MergablePropertyAttribute.cs
- FrameworkContentElementAutomationPeer.cs
- ServiceDescriptions.cs
- MenuAutomationPeer.cs
- DataColumn.cs
- SessionStateSection.cs
- TemplateControlCodeDomTreeGenerator.cs
- DictionaryChange.cs
- SendingRequestEventArgs.cs
- OlePropertyStructs.cs
- Literal.cs
- RecognizerBase.cs
- Tokenizer.cs
- CodeDomSerializerException.cs
- MetafileHeader.cs
- FileDataSourceCache.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ParserHooks.cs
- DateTimeConstantAttribute.cs
- UxThemeWrapper.cs
- ColumnBinding.cs
- DashStyles.cs
- ImageSourceTypeConverter.cs
- IgnoreSection.cs
- FormatConvertedBitmap.cs
- StateChangeEvent.cs
- PropertiesTab.cs