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
- ClientRoleProvider.cs
- DesignBinding.cs
- ScrollBar.cs
- TextDecorationCollectionConverter.cs
- WS2007FederationHttpBindingCollectionElement.cs
- IndexerNameAttribute.cs
- WorkflowLayouts.cs
- ParseHttpDate.cs
- UnhandledExceptionEventArgs.cs
- XmlDataFileEditor.cs
- ImageAttributes.cs
- TransportSecurityBindingElement.cs
- TrustLevelCollection.cs
- SchemaSetCompiler.cs
- ConnectorSelectionGlyph.cs
- XmlILAnnotation.cs
- DefaultPropertiesToSend.cs
- FileLogRecordHeader.cs
- DataGridDesigner.cs
- SystemWebCachingSectionGroup.cs
- SerialPinChanges.cs
- DataQuery.cs
- WithStatement.cs
- DoubleIndependentAnimationStorage.cs
- shaper.cs
- keycontainerpermission.cs
- Polygon.cs
- HttpWebRequest.cs
- PageEventArgs.cs
- MethodToken.cs
- XmlILConstructAnalyzer.cs
- BinaryFormatter.cs
- KnownBoxes.cs
- RegexStringValidator.cs
- HostingEnvironment.cs
- SurrogateSelector.cs
- HostUtils.cs
- EncoderParameter.cs
- SmtpNtlmAuthenticationModule.cs
- DataGridViewTextBoxCell.cs
- RectangleGeometry.cs
- SymbolTable.cs
- OleDbError.cs
- XmlQuerySequence.cs
- HyperLinkField.cs
- UserControlParser.cs
- ClockGroup.cs
- EventLogTraceListener.cs
- RestHandlerFactory.cs
- XmlReflectionImporter.cs
- ProcessProtocolHandler.cs
- DownloadProgressEventArgs.cs
- DriveNotFoundException.cs
- PerformanceCounterLib.cs
- AliasedSlot.cs
- GlyphRunDrawing.cs
- ContentFilePart.cs
- WindowsListView.cs
- SqlProcedureAttribute.cs
- XhtmlTextWriter.cs
- UpdateManifestForBrowserApplication.cs
- SQLInt64.cs
- CodeDomDecompiler.cs
- CodeTypeMemberCollection.cs
- TransformGroup.cs
- EntityDesignerBuildProvider.cs
- TimelineClockCollection.cs
- SqlDataSourceQueryEditorForm.cs
- HttpHeaderCollection.cs
- HttpServerVarsCollection.cs
- HiddenField.cs
- WorkflowMessageEventHandler.cs
- StackSpiller.Temps.cs
- SiteMapNodeCollection.cs
- EventLogRecord.cs
- ServiceContractGenerationContext.cs
- SchemaElementLookUpTable.cs
- MarkupCompilePass2.cs
- TransformProviderWrapper.cs
- ColumnMap.cs
- TextTreeTextElementNode.cs
- TemplateBindingExpressionConverter.cs
- XmlQueryTypeFactory.cs
- LinkedDataMemberFieldEditor.cs
- Encoder.cs
- ColorPalette.cs
- securitycriticaldata.cs
- PersonalizationDictionary.cs
- CryptographicAttribute.cs
- WindowsSysHeader.cs
- CancelEventArgs.cs
- webclient.cs
- XPathAxisIterator.cs
- RequiredFieldValidator.cs
- Int32AnimationBase.cs
- ParameterToken.cs
- ListControl.cs
- RpcCryptoRequest.cs
- ToolStripItemImageRenderEventArgs.cs
- ColumnPropertiesGroup.cs