Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / FixedHyperLink.cs / 1305600 / 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
- ReturnEventArgs.cs
- StateDesigner.Layouts.cs
- IImplicitResourceProvider.cs
- FlowDocument.cs
- ValueQuery.cs
- QueryContinueDragEvent.cs
- COM2TypeInfoProcessor.cs
- OpenTypeLayout.cs
- Activator.cs
- CalendarDay.cs
- HttpCacheParams.cs
- AuthenticateEventArgs.cs
- FlowDocumentPageViewerAutomationPeer.cs
- ThreadPool.cs
- _TLSstream.cs
- ObjectStateManagerMetadata.cs
- LongValidator.cs
- RIPEMD160Managed.cs
- MediaCommands.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- PolyBezierSegment.cs
- Size3D.cs
- GuidelineCollection.cs
- SqlRowUpdatingEvent.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- SecurityKeyUsage.cs
- RankException.cs
- Point3D.cs
- ViewBase.cs
- BasicHttpSecurity.cs
- WebPartCollection.cs
- MouseButtonEventArgs.cs
- SingleAnimation.cs
- HandleTable.cs
- COM2FontConverter.cs
- TakeQueryOptionExpression.cs
- PointF.cs
- InvokeProviderWrapper.cs
- SqlRewriteScalarSubqueries.cs
- PointUtil.cs
- RetriableClipboard.cs
- Style.cs
- PropertyMappingExceptionEventArgs.cs
- DropShadowBitmapEffect.cs
- EntitySet.cs
- FacetValues.cs
- SqlCacheDependencyDatabaseCollection.cs
- GenericPrincipal.cs
- TraceHandler.cs
- ResumeStoryboard.cs
- ToolStripPanelRenderEventArgs.cs
- StatusBar.cs
- EntityDesignerDataSourceView.cs
- ConstraintManager.cs
- OTFRasterizer.cs
- RtfControls.cs
- CryptoConfig.cs
- BaseParaClient.cs
- IImplicitResourceProvider.cs
- XmlNodeReader.cs
- Italic.cs
- RegionData.cs
- MetadataItemSerializer.cs
- HttpPostedFile.cs
- ServiceDescriptionData.cs
- SkinBuilder.cs
- EncoderParameters.cs
- WindowAutomationPeer.cs
- SurrogateSelector.cs
- RequestStatusBarUpdateEventArgs.cs
- EnumType.cs
- TreeNodeSelectionProcessor.cs
- userdatakeys.cs
- ServiceAuthorizationManager.cs
- DataTableReader.cs
- EncoderParameter.cs
- ThicknessKeyFrameCollection.cs
- InkCanvasAutomationPeer.cs
- NativeMethods.cs
- DoubleConverter.cs
- FixedFindEngine.cs
- DataGridColumnHeadersPresenter.cs
- SvcFileManager.cs
- FunctionMappingTranslator.cs
- DesignerView.Commands.cs
- XpsFixedDocumentReaderWriter.cs
- PeerInvitationResponse.cs
- XmlLoader.cs
- listitem.cs
- ButtonChrome.cs
- Bitmap.cs
- ContentHostHelper.cs
- ResourcePart.cs
- SpotLight.cs
- TableSectionStyle.cs
- SerialPinChanges.cs
- UrlMappingsSection.cs
- XmlText.cs
- HashLookup.cs
- ZoneMembershipCondition.cs