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
- EventsTab.cs
- TagPrefixInfo.cs
- TagPrefixCollection.cs
- DecoderReplacementFallback.cs
- RoleGroupCollection.cs
- XmlElementAttribute.cs
- EndpointDiscoveryMetadata.cs
- MenuItemCollectionEditor.cs
- PopupEventArgs.cs
- CollectionType.cs
- RepeaterCommandEventArgs.cs
- peernodestatemanager.cs
- Funcletizer.cs
- ApplicationFileParser.cs
- ScriptingRoleServiceSection.cs
- XmlAttribute.cs
- AllMembershipCondition.cs
- parserscommon.cs
- WaitHandleCannotBeOpenedException.cs
- RowToParametersTransformer.cs
- MaterializeFromAtom.cs
- Parser.cs
- BuildResult.cs
- FolderBrowserDialog.cs
- BitmapEditor.cs
- AdRotator.cs
- __Filters.cs
- IIS7WorkerRequest.cs
- CodeIterationStatement.cs
- WebPartEditorOkVerb.cs
- GridErrorDlg.cs
- EntityDataSourceDataSelection.cs
- SecurityHeaderTokenResolver.cs
- XmlQualifiedNameTest.cs
- PreservationFileReader.cs
- Ops.cs
- HtmlContainerControl.cs
- OleDbReferenceCollection.cs
- Pen.cs
- Facet.cs
- ContentElementAutomationPeer.cs
- HttpTransportSecurity.cs
- TabControlDesigner.cs
- ConfigXmlReader.cs
- VSDExceptions.cs
- HtmlValidatorAdapter.cs
- ListBoxAutomationPeer.cs
- ResourcePool.cs
- FrameworkContentElementAutomationPeer.cs
- UpnEndpointIdentity.cs
- RuntimeVariablesExpression.cs
- CaseKeyBox.xaml.cs
- RectangleGeometry.cs
- PerformanceCounterPermissionAttribute.cs
- ConfigurationStrings.cs
- ContentPlaceHolder.cs
- UserNamePasswordValidator.cs
- PageSetupDialog.cs
- RequestUriProcessor.cs
- WindowsScroll.cs
- DoubleLinkListEnumerator.cs
- XmlObjectSerializerReadContext.cs
- ConvertersCollection.cs
- TypeRestriction.cs
- ListItemCollection.cs
- NumberAction.cs
- MembershipSection.cs
- GZipStream.cs
- LoginUtil.cs
- XmlSchemaFacet.cs
- GraphicsContainer.cs
- TypeUtil.cs
- _FixedSizeReader.cs
- AxHost.cs
- FormCollection.cs
- ConfigXmlSignificantWhitespace.cs
- DesignSurface.cs
- DataBoundControlHelper.cs
- SelectionItemProviderWrapper.cs
- DataGridViewRowsAddedEventArgs.cs
- SiblingIterators.cs
- MethodImplAttribute.cs
- FormViewPageEventArgs.cs
- InkPresenter.cs
- AutomationPeer.cs
- PlanCompiler.cs
- XmlElementAttribute.cs
- TableLayoutSettings.cs
- ProjectionRewriter.cs
- RangeBase.cs
- ObjectTypeMapping.cs
- AutomationElementIdentifiers.cs
- InputScope.cs
- NativeMsmqMessage.cs
- InputMethodStateChangeEventArgs.cs
- IgnoreSectionHandler.cs
- DataQuery.cs
- SingleResultAttribute.cs
- FormViewInsertedEventArgs.cs
- ControlBindingsCollection.cs