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
- ObjectParameter.cs
- DrawingCollection.cs
- SqlLiftIndependentRowExpressions.cs
- CommandManager.cs
- PtsPage.cs
- JpegBitmapEncoder.cs
- LOSFormatter.cs
- Cursors.cs
- FormsAuthenticationConfiguration.cs
- MetafileHeaderWmf.cs
- SByteStorage.cs
- LockCookie.cs
- _LazyAsyncResult.cs
- ProfileParameter.cs
- StandardToolWindows.cs
- precedingquery.cs
- httpapplicationstate.cs
- ConfigXmlText.cs
- FirstQueryOperator.cs
- EncodingDataItem.cs
- ObjectQueryProvider.cs
- DeleteIndexBinder.cs
- SystemInfo.cs
- InspectionWorker.cs
- ApplicationBuildProvider.cs
- ImmComposition.cs
- milexports.cs
- SqlServices.cs
- WebPartConnectionsCancelEventArgs.cs
- DynamicValidatorEventArgs.cs
- DeleteIndexBinder.cs
- DragDropHelper.cs
- StringInfo.cs
- RolePrincipal.cs
- FormCollection.cs
- TextRangeEdit.cs
- PixelFormats.cs
- Highlights.cs
- ShortcutKeysEditor.cs
- SQLDateTimeStorage.cs
- Utilities.cs
- ParserExtension.cs
- CachedPathData.cs
- NetStream.cs
- Misc.cs
- FormattedTextSymbols.cs
- IPPacketInformation.cs
- TypeUtils.cs
- MetadataArtifactLoaderFile.cs
- WorkflowMessageEventHandler.cs
- WebPartAuthorizationEventArgs.cs
- StylusPoint.cs
- DataErrorValidationRule.cs
- RelatedView.cs
- WebPartConnectionsDisconnectVerb.cs
- TreeNodeStyleCollection.cs
- VerificationAttribute.cs
- AttributeXamlType.cs
- HttpResponseBase.cs
- DataControlCommands.cs
- WindowsAuthenticationEventArgs.cs
- PropertyTabChangedEvent.cs
- SmtpFailedRecipientsException.cs
- Viewport3DAutomationPeer.cs
- NamespaceQuery.cs
- InternalDispatchObject.cs
- MoveSizeWinEventHandler.cs
- ReachObjectContext.cs
- XhtmlConformanceSection.cs
- SafeSecurityHandles.cs
- PersonalizationProviderHelper.cs
- Menu.cs
- DiscoveryExceptionDictionary.cs
- FixedDSBuilder.cs
- PrefixHandle.cs
- Color.cs
- SessionStateModule.cs
- XsdCachingReader.cs
- QilInvokeEarlyBound.cs
- MultiSelector.cs
- PersistenceParticipant.cs
- CommonDialog.cs
- DecodeHelper.cs
- ClientTargetCollection.cs
- Range.cs
- PolyQuadraticBezierSegment.cs
- SafeArrayTypeMismatchException.cs
- DataGridViewRowCollection.cs
- ControlCollection.cs
- Util.cs
- SecurityTokenException.cs
- ScopelessEnumAttribute.cs
- SQLByteStorage.cs
- CounterSampleCalculator.cs
- SqlCachedBuffer.cs
- RC2.cs
- ChineseLunisolarCalendar.cs
- DynamicField.cs
- SQLInt64.cs
- TerminatorSinks.cs