Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Opcode.cs
- PriorityQueue.cs
- SqlUnionizer.cs
- SHA512.cs
- SpStreamWrapper.cs
- LineSegment.cs
- WindowsSecurityTokenAuthenticator.cs
- TrustManagerMoreInformation.cs
- HttpHandlersSection.cs
- StatusBar.cs
- BinHexEncoder.cs
- ObjectPersistData.cs
- BinaryObjectReader.cs
- PEFileEvidenceFactory.cs
- SrgsToken.cs
- SiteMapSection.cs
- CodeGenHelper.cs
- TextBlockAutomationPeer.cs
- MappedMetaModel.cs
- WinCategoryAttribute.cs
- WindowsPrincipal.cs
- PrintControllerWithStatusDialog.cs
- WebBrowserBase.cs
- RequestTimeoutManager.cs
- ColumnPropertiesGroup.cs
- GridViewDeleteEventArgs.cs
- SqlColumnizer.cs
- DataGridViewRowConverter.cs
- AudioLevelUpdatedEventArgs.cs
- XPathAxisIterator.cs
- LinkConverter.cs
- SystemKeyConverter.cs
- FacetEnabledSchemaElement.cs
- TemplateControlBuildProvider.cs
- RangeValidator.cs
- CollectionViewGroupRoot.cs
- XmlDataSourceView.cs
- Documentation.cs
- SqlDataSourceConfigureSelectPanel.cs
- GraphicsPathIterator.cs
- NamespaceQuery.cs
- IPAddressCollection.cs
- SizeF.cs
- UnhandledExceptionEventArgs.cs
- InputLanguageManager.cs
- Deflater.cs
- RoleManagerEventArgs.cs
- CodeNamespaceImportCollection.cs
- ObjectTag.cs
- HandoffBehavior.cs
- DataConnectionHelper.cs
- RoleGroup.cs
- PermissionAttributes.cs
- SqlUDTStorage.cs
- XhtmlConformanceSection.cs
- TransformerConfigurationWizardBase.cs
- PrintDocument.cs
- SQLMoneyStorage.cs
- SymDocumentType.cs
- DirectoryRedirect.cs
- GeometryConverter.cs
- CellParaClient.cs
- SamlAuthorizationDecisionClaimResource.cs
- __ConsoleStream.cs
- PrePrepareMethodAttribute.cs
- ConditionChanges.cs
- ToolStrip.cs
- PageWrapper.cs
- Int32Collection.cs
- TracedNativeMethods.cs
- ValidationUtility.cs
- FacetValues.cs
- CategoryAttribute.cs
- ModelPropertyImpl.cs
- ImageField.cs
- FullTextBreakpoint.cs
- ISFClipboardData.cs
- XmlElementAttribute.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- webclient.cs
- TransactionTraceIdentifier.cs
- BigInt.cs
- ContextMenuService.cs
- SecurityToken.cs
- SoapHeaderAttribute.cs
- DirectoryInfo.cs
- SwitchLevelAttribute.cs
- RoamingStoreFile.cs
- UriSection.cs
- ColorConverter.cs
- TextTrailingCharacterEllipsis.cs
- ListMarkerSourceInfo.cs
- Logging.cs
- BrowserCapabilitiesCodeGenerator.cs
- PropertyCollection.cs
- DataBoundLiteralControl.cs
- WebServiceTypeData.cs
- WebBrowser.cs
- TransformPatternIdentifiers.cs
- ButtonBaseAdapter.cs