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
- SignatureDescription.cs
- ContextStack.cs
- RegistryDataKey.cs
- DictionaryBase.cs
- WebDisplayNameAttribute.cs
- handlecollector.cs
- SHA384Cng.cs
- SignedPkcs7.cs
- CloseCryptoHandleRequest.cs
- TextBlock.cs
- RemotingConfigParser.cs
- ZipFileInfo.cs
- SqlServices.cs
- XmlAttributes.cs
- ElementNotEnabledException.cs
- SHA1.cs
- StylusPoint.cs
- DocumentGrid.cs
- TreeBuilderXamlTranslator.cs
- PropertyFilterAttribute.cs
- WmlValidatorAdapter.cs
- VBIdentifierTrimConverter.cs
- ToolStripDropDownClosedEventArgs.cs
- HtmlShimManager.cs
- NullableDoubleAverageAggregationOperator.cs
- PropertyInformationCollection.cs
- MultiPageTextView.cs
- DbProviderFactoriesConfigurationHandler.cs
- Literal.cs
- SrgsRuleRef.cs
- SiteMapSection.cs
- HotSpotCollection.cs
- XmlDataLoader.cs
- WindowsScrollBarBits.cs
- StrokeNodeOperations2.cs
- VScrollBar.cs
- ArgumentValue.cs
- _Rfc2616CacheValidators.cs
- DataContractAttribute.cs
- ColumnBinding.cs
- Identifier.cs
- ParserOptions.cs
- ClientSideQueueItem.cs
- MustUnderstandSoapException.cs
- TextFormatterContext.cs
- UnsignedPublishLicense.cs
- RootProfilePropertySettingsCollection.cs
- MdiWindowListStrip.cs
- Timer.cs
- DataGridBoolColumn.cs
- LambdaCompiler.Lambda.cs
- WindowsIPAddress.cs
- SmtpFailedRecipientException.cs
- PrintingPermissionAttribute.cs
- Point3DValueSerializer.cs
- EntityType.cs
- UserControlParser.cs
- ServiceModelSecurityTokenTypes.cs
- SerializationEventsCache.cs
- ObjectIDGenerator.cs
- AuthenticateEventArgs.cs
- WebPartUserCapability.cs
- InternalCache.cs
- RoutedEventValueSerializer.cs
- BrowserTree.cs
- HtmlTernaryTree.cs
- Stackframe.cs
- DataGridViewCellCancelEventArgs.cs
- Certificate.cs
- UnSafeCharBuffer.cs
- WorkflowViewManager.cs
- EdmComplexTypeAttribute.cs
- QilXmlReader.cs
- DataGridParentRows.cs
- AutomationEventArgs.cs
- CompareValidator.cs
- BaseDataBoundControl.cs
- SqlUdtInfo.cs
- WebConfigurationFileMap.cs
- Page.cs
- HttpModuleActionCollection.cs
- GCHandleCookieTable.cs
- XmlAttributeCache.cs
- hwndwrapper.cs
- ChildDocumentBlock.cs
- SelectionPattern.cs
- AnnotationObservableCollection.cs
- NamedElement.cs
- Vector.cs
- controlskin.cs
- TextEditorSpelling.cs
- PolyLineSegment.cs
- messageonlyhwndwrapper.cs
- MatrixAnimationUsingPath.cs
- CacheVirtualItemsEvent.cs
- KeyToListMap.cs
- SQlBooleanStorage.cs
- InfoCardAsymmetricCrypto.cs
- SerializationUtility.cs
- NavigateEvent.cs