Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Documents / FixedHyperLink.cs / 1 / FixedHyperLink.cs
//---------------------------------------------------------------------------- //// Copyright (C) 2004 by Microsoft Corporation. All rights reserved. // // // Description: // Implements the help class of FixedHyperLink. // // History: // 02/04/2005 - Ming Liu(MingLiu) - Created. // // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.Windows.Threading; using System.Windows.Markup; using System.Windows.Navigation; using System.Windows.Media; ////// The IFixedNavigate interface will be implemented by FixedPage, FixedDocument, /// and FixedDocumentSequence to support fixed hyperlink. /// internal interface IFixedNavigate { ////// Find the element which given ID in this document context. /// /// The ID of UIElement to search for /// The fixedPage that contains returns UIElement ///UIElement FindElementByID(string elementID, out FixedPage rootFixedPage); /// /// Navigate to the element with ID= elementID /// /// void NavigateAsync (string elementID); } internal static class FixedHyperLink { ////// NavigationService property ChangedCallback. /// public static void OnNavigationServiceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FixedDocument fixedContent = d as FixedDocument; if (fixedContent != null) { NavigationService oldService = (NavigationService) e.OldValue; NavigationService newService = (NavigationService) e.NewValue; if (oldService != null) { oldService.FragmentNavigation -= new FragmentNavigationEventHandler(FragmentHandler); } if (newService != null) { newService.FragmentNavigation += new FragmentNavigationEventHandler(FragmentHandler); } } } ////// Called by NavigationService to let document content to handle the fragment first. /// /// /// internal static void FragmentHandler(object sender, FragmentNavigationEventArgs e) { NavigationService ns = sender as NavigationService; if (ns != null) { string fragment = e.Fragment; IFixedNavigate fixedNavigate = ns.Content as IFixedNavigate; if (fixedNavigate != null) { fixedNavigate.NavigateAsync(e.Fragment); e.Handled = true; } } } ////// Fire BringinToView event on the element ID. /// /// The host document of element ID, call any one implents IFixedNavigate /// internal static void NavigateToElement(object ElementHost, string elementID) { FixedPage rootFixedPage = null; FrameworkElement targetElement = null; targetElement = ((IFixedNavigate)ElementHost).FindElementByID(elementID, out rootFixedPage) as FrameworkElement; if (targetElement != null) { if (targetElement is FixedPage) { // // For fixedpage, we only need to scroll to page position. // targetElement.BringIntoView(); } else { //Just passing in raw rect of targetElement. Let DocumentViewer/Grid handle transforms targetElement.BringIntoView(targetElement.VisualContentBounds); } } return; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- //// Copyright (C) 2004 by Microsoft Corporation. All rights reserved. // // // Description: // Implements the help class of FixedHyperLink. // // History: // 02/04/2005 - Ming Liu(MingLiu) - Created. // // //--------------------------------------------------------------------------- namespace System.Windows.Documents { using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.Windows.Threading; using System.Windows.Markup; using System.Windows.Navigation; using System.Windows.Media; ////// The IFixedNavigate interface will be implemented by FixedPage, FixedDocument, /// and FixedDocumentSequence to support fixed hyperlink. /// internal interface IFixedNavigate { ////// Find the element which given ID in this document context. /// /// The ID of UIElement to search for /// The fixedPage that contains returns UIElement ///UIElement FindElementByID(string elementID, out FixedPage rootFixedPage); /// /// Navigate to the element with ID= elementID /// /// void NavigateAsync (string elementID); } internal static class FixedHyperLink { ////// NavigationService property ChangedCallback. /// public static void OnNavigationServiceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FixedDocument fixedContent = d as FixedDocument; if (fixedContent != null) { NavigationService oldService = (NavigationService) e.OldValue; NavigationService newService = (NavigationService) e.NewValue; if (oldService != null) { oldService.FragmentNavigation -= new FragmentNavigationEventHandler(FragmentHandler); } if (newService != null) { newService.FragmentNavigation += new FragmentNavigationEventHandler(FragmentHandler); } } } ////// Called by NavigationService to let document content to handle the fragment first. /// /// /// internal static void FragmentHandler(object sender, FragmentNavigationEventArgs e) { NavigationService ns = sender as NavigationService; if (ns != null) { string fragment = e.Fragment; IFixedNavigate fixedNavigate = ns.Content as IFixedNavigate; if (fixedNavigate != null) { fixedNavigate.NavigateAsync(e.Fragment); e.Handled = true; } } } ////// Fire BringinToView event on the element ID. /// /// The host document of element ID, call any one implents IFixedNavigate /// internal static void NavigateToElement(object ElementHost, string elementID) { FixedPage rootFixedPage = null; FrameworkElement targetElement = null; targetElement = ((IFixedNavigate)ElementHost).FindElementByID(elementID, out rootFixedPage) as FrameworkElement; if (targetElement != null) { if (targetElement is FixedPage) { // // For fixedpage, we only need to scroll to page position. // targetElement.BringIntoView(); } else { //Just passing in raw rect of targetElement. Let DocumentViewer/Grid handle transforms targetElement.BringIntoView(targetElement.VisualContentBounds); } } return; } } } // 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
- TypeBuilder.cs
- SerializationStore.cs
- WebPartHeaderCloseVerb.cs
- SecurityElement.cs
- ComboBoxDesigner.cs
- TextBoxRenderer.cs
- ValueChangedEventManager.cs
- LineGeometry.cs
- EventDrivenDesigner.cs
- oledbmetadatacolumnnames.cs
- SyndicationItem.cs
- TextSpanModifier.cs
- InvalidPipelineStoreException.cs
- EditorZoneBase.cs
- ReadOnlyHierarchicalDataSource.cs
- OciEnlistContext.cs
- WebControlAdapter.cs
- DataGridCommandEventArgs.cs
- AggregationMinMaxHelpers.cs
- FileInfo.cs
- CodeRemoveEventStatement.cs
- DeclarativeCatalogPart.cs
- WMIInterop.cs
- CodeCommentStatementCollection.cs
- GridViewSortEventArgs.cs
- EntityTypeBase.cs
- mediaeventshelper.cs
- XsdBuilder.cs
- Events.cs
- SqlBuffer.cs
- ComplexPropertyEntry.cs
- MutexSecurity.cs
- CodeEventReferenceExpression.cs
- HeaderCollection.cs
- PowerStatus.cs
- TemplateControlParser.cs
- EntityDesignerUtils.cs
- HtmlPhoneCallAdapter.cs
- Blend.cs
- ETagAttribute.cs
- EventLog.cs
- EventSinkActivityDesigner.cs
- DataGridParentRows.cs
- XmlConvert.cs
- RequestCacheEntry.cs
- ClientReliableChannelBinder.cs
- NullReferenceException.cs
- LayoutManager.cs
- SecurityElement.cs
- Currency.cs
- VirtualPath.cs
- TreeBuilderXamlTranslator.cs
- ExitEventArgs.cs
- VectorKeyFrameCollection.cs
- CharacterHit.cs
- Metadata.cs
- SatelliteContractVersionAttribute.cs
- JsonByteArrayDataContract.cs
- RegistryConfigurationProvider.cs
- GeneralTransform3DTo2D.cs
- DtdParser.cs
- Connector.cs
- ListChangedEventArgs.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TraceContext.cs
- PageTheme.cs
- Quaternion.cs
- EntitySet.cs
- SystemWebCachingSectionGroup.cs
- ImageList.cs
- NamespaceCollection.cs
- ADRole.cs
- OutputScope.cs
- FrameworkPropertyMetadata.cs
- shaperfactoryquerycacheentry.cs
- HostnameComparisonMode.cs
- PanelStyle.cs
- DefaultSection.cs
- FormsAuthenticationConfiguration.cs
- WebPartHeaderCloseVerb.cs
- EditorPartCollection.cs
- GroupDescription.cs
- _RequestLifetimeSetter.cs
- ConstraintConverter.cs
- SqlConnection.cs
- ScriptControlManager.cs
- CharKeyFrameCollection.cs
- DesignerDataTableBase.cs
- SqlCacheDependencyDatabaseCollection.cs
- WSTrust.cs
- SingleAnimation.cs
- ExpressionVisitor.cs
- BinaryUtilClasses.cs
- NoResizeSelectionBorderGlyph.cs
- XmlParser.cs
- XmlIlGenerator.cs
- ValueProviderWrapper.cs
- CodeNamespace.cs
- GridViewUpdateEventArgs.cs
- ToolStripDropDownMenu.cs