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
- EventDescriptorCollection.cs
- DynamicVirtualDiscoSearcher.cs
- TextAnchor.cs
- CompoundFileIOPermission.cs
- ScrollChrome.cs
- SystemDropShadowChrome.cs
- CloudCollection.cs
- FileChangesMonitor.cs
- CompressedStack.cs
- InternalsVisibleToAttribute.cs
- WebInvokeAttribute.cs
- FullTextBreakpoint.cs
- RewritingSimplifier.cs
- ISFClipboardData.cs
- Bidi.cs
- KeyTime.cs
- PersonalizationProviderHelper.cs
- HitTestFilterBehavior.cs
- StringWriter.cs
- DataGridRowsPresenter.cs
- IgnoreFlushAndCloseStream.cs
- TextPenaltyModule.cs
- MetadataException.cs
- ColumnReorderedEventArgs.cs
- Point3DAnimation.cs
- CheckBox.cs
- DirectoryInfo.cs
- ZipIOCentralDirectoryBlock.cs
- RowToFieldTransformer.cs
- IndexOutOfRangeException.cs
- UnmanagedBitmapWrapper.cs
- DataSetFieldSchema.cs
- FontFamilyIdentifier.cs
- EntityDataSourceWizardForm.cs
- safelinkcollection.cs
- ExtensionQuery.cs
- InvokeAction.cs
- RowBinding.cs
- JournalEntry.cs
- LoginStatusDesigner.cs
- MenuAdapter.cs
- MiniLockedBorderGlyph.cs
- OrderByQueryOptionExpression.cs
- FlowDocumentScrollViewer.cs
- SmtpDigestAuthenticationModule.cs
- SmtpDateTime.cs
- NodeFunctions.cs
- MappingMetadataHelper.cs
- PageContent.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- RectAnimation.cs
- ReceiveActivityDesignerTheme.cs
- StreamDocument.cs
- SmiMetaDataProperty.cs
- CalendarModeChangedEventArgs.cs
- EntityParameterCollection.cs
- RotateTransform3D.cs
- NoResizeHandleGlyph.cs
- RoleManagerModule.cs
- StrokeCollectionConverter.cs
- ClassHandlersStore.cs
- SqlDataSourceEnumerator.cs
- PersonalizationStateInfo.cs
- StructuralType.cs
- ProgressBar.cs
- AuthenticationManager.cs
- DataControlPagerLinkButton.cs
- NeutralResourcesLanguageAttribute.cs
- FormatConvertedBitmap.cs
- HostingPreferredMapPath.cs
- _ChunkParse.cs
- SecurityTokenAuthenticator.cs
- MetadataCacheItem.cs
- AutoCompleteStringCollection.cs
- ItemsPanelTemplate.cs
- PropertyAccessVisitor.cs
- SettingsSavedEventArgs.cs
- MailAddressCollection.cs
- StringStorage.cs
- VisualTarget.cs
- RemotingException.cs
- SafeWaitHandle.cs
- StringComparer.cs
- TdsParser.cs
- SqlUserDefinedTypeAttribute.cs
- BulletedList.cs
- Model3D.cs
- SafeLocalMemHandle.cs
- CustomErrorCollection.cs
- StreamReader.cs
- IRCollection.cs
- RequestCacheManager.cs
- LockedHandleGlyph.cs
- SymmetricAlgorithm.cs
- AddInBase.cs
- LogLogRecordEnumerator.cs
- SymbolDocumentGenerator.cs
- StringArrayEditor.cs
- EditingCoordinator.cs
- Splitter.cs