Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- CopyOnWriteList.cs
- ToolStripItemRenderEventArgs.cs
- SqlServices.cs
- UnsafeNativeMethods.cs
- ViewManagerAttribute.cs
- ApplicationProxyInternal.cs
- SoapWriter.cs
- NetNamedPipeSecurityMode.cs
- Encoding.cs
- SymbolMethod.cs
- PenContexts.cs
- CompletionCallbackWrapper.cs
- SHA512.cs
- OleStrCAMarshaler.cs
- MenuItemCollection.cs
- Transform3DGroup.cs
- CornerRadius.cs
- FileDialog_Vista_Interop.cs
- RegexInterpreter.cs
- XmlIterators.cs
- HasRunnableWorkflowEvent.cs
- SafeSecurityHandles.cs
- ScalarType.cs
- SqlWorkflowPersistenceService.cs
- PeerToPeerException.cs
- SecurityChannelFaultConverter.cs
- SupportsPreviewControlAttribute.cs
- ResourceDescriptionAttribute.cs
- CardSpaceShim.cs
- Selector.cs
- Msec.cs
- ComboBoxItem.cs
- FixedMaxHeap.cs
- ObjectListItemCollection.cs
- GPPOINT.cs
- WebPartDeleteVerb.cs
- GeneralTransformCollection.cs
- WindowsGraphicsWrapper.cs
- Separator.cs
- SafeLibraryHandle.cs
- DrawListViewSubItemEventArgs.cs
- SafeEventLogWriteHandle.cs
- XamlPoint3DCollectionSerializer.cs
- XmlReaderSettings.cs
- JournalEntry.cs
- IArgumentProvider.cs
- PreviewPageInfo.cs
- SqlCacheDependencySection.cs
- OdbcConnectionHandle.cs
- XsltContext.cs
- ActionFrame.cs
- OledbConnectionStringbuilder.cs
- IncrementalReadDecoders.cs
- DbXmlEnabledProviderManifest.cs
- StateInitialization.cs
- WebPartHelpVerb.cs
- QuarticEase.cs
- ObjectStateManagerMetadata.cs
- MultipartIdentifier.cs
- SynchronousReceiveElement.cs
- CodeCommentStatement.cs
- TogglePattern.cs
- BaseCodeDomTreeGenerator.cs
- SourceInterpreter.cs
- EncoderReplacementFallback.cs
- Transactions.cs
- ListViewGroupConverter.cs
- InheritanceRules.cs
- TextTrailingCharacterEllipsis.cs
- PointLight.cs
- BeginGetFileNameFromUserRequest.cs
- Version.cs
- RemotingServices.cs
- MasterPageBuildProvider.cs
- TableRow.cs
- ViewCellRelation.cs
- KeyValuePair.cs
- SapiInterop.cs
- UIElementCollection.cs
- SchemaEntity.cs
- NTAccount.cs
- SqlClientWrapperSmiStream.cs
- StructuralComparisons.cs
- CultureSpecificStringDictionary.cs
- MD5HashHelper.cs
- ColorConvertedBitmap.cs
- Object.cs
- HyperLinkColumn.cs
- Privilege.cs
- XslCompiledTransform.cs
- PropertyAccessVisitor.cs
- ExpressionVisitor.cs
- UserControlCodeDomTreeGenerator.cs
- Touch.cs
- ReferencedAssembly.cs
- ReadOnlyDataSource.cs
- Internal.cs
- RuleConditionDialog.Designer.cs
- RemotingClientProxy.cs
- HandleValueEditor.cs