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
- PropertyPath.cs
- ReaderWriterLock.cs
- CornerRadiusConverter.cs
- ObjectTag.cs
- ExpressionPrefixAttribute.cs
- BitmapScalingModeValidation.cs
- CLSCompliantAttribute.cs
- validation.cs
- LineUtil.cs
- ContentOnlyMessage.cs
- DataGridViewRowHeaderCell.cs
- FacetDescription.cs
- OpCodes.cs
- GacUtil.cs
- TextSimpleMarkerProperties.cs
- ManipulationVelocities.cs
- InstanceOwner.cs
- XmlMemberMapping.cs
- ColumnHeaderCollectionEditor.cs
- XmlSchemaExporter.cs
- XamlHttpHandlerFactory.cs
- Rule.cs
- TreeChangeInfo.cs
- Scripts.cs
- RegexGroup.cs
- CodeSnippetExpression.cs
- Exceptions.cs
- KeysConverter.cs
- XMLUtil.cs
- ImageListUtils.cs
- TripleDESCryptoServiceProvider.cs
- MetaForeignKeyColumn.cs
- MergeLocalizationDirectives.cs
- DesignerVerb.cs
- StateBag.cs
- BinaryReader.cs
- CheckedPointers.cs
- ImageSourceConverter.cs
- TextRangeBase.cs
- TemplateApplicationHelper.cs
- WebPartConnectionsCloseVerb.cs
- SpecularMaterial.cs
- Gdiplus.cs
- QueryCacheManager.cs
- DBSchemaTable.cs
- WindowsToolbarItemAsMenuItem.cs
- Profiler.cs
- XmlUnspecifiedAttribute.cs
- DateTimeSerializationSection.cs
- DropDownList.cs
- Image.cs
- ConstrainedDataObject.cs
- ErrorRuntimeConfig.cs
- XPathDocumentIterator.cs
- SqlUdtInfo.cs
- Constraint.cs
- RijndaelManaged.cs
- JoinCqlBlock.cs
- EventManager.cs
- TextTabProperties.cs
- ProviderConnectionPointCollection.cs
- ConversionContext.cs
- FrameSecurityDescriptor.cs
- sitestring.cs
- CodeDelegateCreateExpression.cs
- ConnectionStringsExpressionBuilder.cs
- ScrollItemPattern.cs
- RegexBoyerMoore.cs
- PngBitmapDecoder.cs
- ISAPIRuntime.cs
- InfoCardKeyedHashAlgorithm.cs
- WindowsListView.cs
- Byte.cs
- TagPrefixInfo.cs
- MonikerUtility.cs
- Compiler.cs
- AuthStoreRoleProvider.cs
- PermissionListSet.cs
- Rethrow.cs
- BaseDataBoundControl.cs
- IntSecurity.cs
- PathNode.cs
- ZipIOCentralDirectoryBlock.cs
- ZoneButton.cs
- AlphabeticalEnumConverter.cs
- DictionarySectionHandler.cs
- GeneralTransform.cs
- TextTreeRootNode.cs
- RegionInfo.cs
- ContentPlaceHolder.cs
- Menu.cs
- WebPartDisplayModeCancelEventArgs.cs
- remotingproxy.cs
- EventProvider.cs
- Ref.cs
- RecoverInstanceLocksCommand.cs
- DataMisalignedException.cs
- SerializationStore.cs
- XslAstAnalyzer.cs
- ToolStripCustomTypeDescriptor.cs