Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OdbcReferenceCollection.cs
- RequestTimeoutManager.cs
- Transform.cs
- DocumentViewerAutomationPeer.cs
- TouchPoint.cs
- ColumnMap.cs
- MembershipValidatePasswordEventArgs.cs
- GCHandleCookieTable.cs
- SystemEvents.cs
- EventBuilder.cs
- IxmlLineInfo.cs
- ReferenceEqualityComparer.cs
- CompilerState.cs
- MessageDecoder.cs
- AnnotationHighlightLayer.cs
- Semaphore.cs
- LicenseProviderAttribute.cs
- WebBrowserHelper.cs
- EdmType.cs
- StrongNamePublicKeyBlob.cs
- ExpressionNode.cs
- StoreContentChangedEventArgs.cs
- XslTransform.cs
- DataServiceQuery.cs
- Types.cs
- ToolStripItemGlyph.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CodeGotoStatement.cs
- SafeSecurityHandles.cs
- ErrorFormatterPage.cs
- BooleanConverter.cs
- RunInstallerAttribute.cs
- XamlVector3DCollectionSerializer.cs
- Int32RectConverter.cs
- DocumentXPathNavigator.cs
- HostingPreferredMapPath.cs
- XmlSchemaInfo.cs
- TextOnlyOutput.cs
- OutputCacheEntry.cs
- HtmlTableRowCollection.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- Property.cs
- MD5.cs
- DataTableReader.cs
- GenericTextProperties.cs
- ByeOperationCD1AsyncResult.cs
- XsltFunctions.cs
- MsmqDecodeHelper.cs
- SecurityCapabilities.cs
- TimeoutException.cs
- TextParagraphView.cs
- DataGridViewMethods.cs
- AdCreatedEventArgs.cs
- SkipQueryOptionExpression.cs
- TransformDescriptor.cs
- ObjectListField.cs
- WebPartConnectionsCancelEventArgs.cs
- WindowInteractionStateTracker.cs
- SspiSecurityTokenParameters.cs
- AutomationPropertyChangedEventArgs.cs
- RtfNavigator.cs
- AdRotator.cs
- CheckBox.cs
- ActivationWorker.cs
- RtfToXamlLexer.cs
- SafeFileMapViewHandle.cs
- OrderedDictionary.cs
- WpfPayload.cs
- IPPacketInformation.cs
- HMACRIPEMD160.cs
- XmlCharacterData.cs
- _CommandStream.cs
- BuildProviderCollection.cs
- WebServiceParameterData.cs
- RegexFCD.cs
- XmlTypeAttribute.cs
- SelectorAutomationPeer.cs
- ResponseStream.cs
- KeyValuePairs.cs
- ConfigXmlElement.cs
- EmptyReadOnlyDictionaryInternal.cs
- RectAnimationClockResource.cs
- PersianCalendar.cs
- MultipartContentParser.cs
- RadioButtonPopupAdapter.cs
- BitVector32.cs
- ISessionStateStore.cs
- EntitySqlQueryBuilder.cs
- LeftCellWrapper.cs
- SqlServer2KCompatibilityAnnotation.cs
- DrawTreeNodeEventArgs.cs
- _Win32.cs
- DbConnectionOptions.cs
- DiscoveryViaBehavior.cs
- SurrogateDataContract.cs
- QueryOperatorEnumerator.cs
- Resources.Designer.cs
- MatcherBuilder.cs
- CompilerLocalReference.cs
- OrderedDictionary.cs