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
- CalculatedColumn.cs
- ClientScriptManager.cs
- DataBinding.cs
- XmlILStorageConverter.cs
- HtmlElementCollection.cs
- VirtualDirectoryMappingCollection.cs
- SingleAnimation.cs
- TriggerAction.cs
- ProfileModule.cs
- CodeBinaryOperatorExpression.cs
- TablePattern.cs
- HtmlToClrEventProxy.cs
- XmlWrappingWriter.cs
- ClickablePoint.cs
- ResourceManager.cs
- UIPropertyMetadata.cs
- VectorConverter.cs
- CompilerWrapper.cs
- TouchesOverProperty.cs
- StylesEditorDialog.cs
- ValidatingReaderNodeData.cs
- SecurityState.cs
- CreateUserErrorEventArgs.cs
- XMLSchema.cs
- BitmapEffectInputData.cs
- DataServiceQueryOfT.cs
- PinnedBufferMemoryStream.cs
- TypeExtension.cs
- PrinterSettings.cs
- SQLMembershipProvider.cs
- ProviderBase.cs
- BindingUtils.cs
- HMACMD5.cs
- util.cs
- SelectorAutomationPeer.cs
- TemplateBamlRecordReader.cs
- MouseActionConverter.cs
- SafeProcessHandle.cs
- DSASignatureFormatter.cs
- SpellerInterop.cs
- RuntimeCompatibilityAttribute.cs
- HtmlUtf8RawTextWriter.cs
- AutoSizeToolBoxItem.cs
- UserControl.cs
- SafeRightsManagementQueryHandle.cs
- SigningCredentials.cs
- MessageEncoderFactory.cs
- SerializationHelper.cs
- ScrollItemPattern.cs
- HtmlTitle.cs
- TreeViewImageKeyConverter.cs
- ImageInfo.cs
- SmiTypedGetterSetter.cs
- DataGridViewComboBoxCell.cs
- InputScope.cs
- ToolStripItemDesigner.cs
- VectorCollection.cs
- UInt32Storage.cs
- WindowsScroll.cs
- LoadWorkflowCommand.cs
- IndependentlyAnimatedPropertyMetadata.cs
- TaskFactory.cs
- XmlValueConverter.cs
- RedBlackList.cs
- Wizard.cs
- OdbcConnectionOpen.cs
- DelimitedListTraceListener.cs
- CanonicalFormWriter.cs
- NoResizeHandleGlyph.cs
- BinaryExpressionHelper.cs
- ErrorsHelper.cs
- XmlBufferedByteStreamReader.cs
- Form.cs
- WebPartAddingEventArgs.cs
- CreateUserWizardStep.cs
- RayMeshGeometry3DHitTestResult.cs
- GenericsInstances.cs
- ErrorReporting.cs
- ValidatingPropertiesEventArgs.cs
- WinCategoryAttribute.cs
- RowsCopiedEventArgs.cs
- SplayTreeNode.cs
- ToolbarAUtomationPeer.cs
- DBSchemaRow.cs
- MarkupExtensionReturnTypeAttribute.cs
- TransformBlockRequest.cs
- GatewayDefinition.cs
- SessionSwitchEventArgs.cs
- ListViewItem.cs
- SystemColorTracker.cs
- DependencyObjectPropertyDescriptor.cs
- RadioButtonBaseAdapter.cs
- LocatorManager.cs
- WebServiceErrorEvent.cs
- AxHost.cs
- CreateUserWizard.cs
- BaseCollection.cs
- SelectorAutomationPeer.cs
- ObjectDataSourceSelectingEventArgs.cs
- TreeNodeConverter.cs