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
- ReadWriteObjectLock.cs
- Point3DAnimation.cs
- RegexCode.cs
- DbMetaDataCollectionNames.cs
- MobileCapabilities.cs
- ConfigurationSectionGroup.cs
- InvalidateEvent.cs
- CheckedPointers.cs
- TextPenaltyModule.cs
- WebBrowserEvent.cs
- MemoryMappedView.cs
- HwndHost.cs
- SystemNetworkInterface.cs
- XMLSchema.cs
- RoleGroupCollection.cs
- BasicCellRelation.cs
- DirectionalLight.cs
- HandlerBase.cs
- MouseEvent.cs
- DeferredTextReference.cs
- ResourceAttributes.cs
- Label.cs
- DocumentPaginator.cs
- CommandField.cs
- DecoderNLS.cs
- CreateCardRequest.cs
- FileInfo.cs
- InheritedPropertyChangedEventArgs.cs
- PointUtil.cs
- SplitterEvent.cs
- CatalogZoneAutoFormat.cs
- CodeDirectoryCompiler.cs
- DataServiceOperationContext.cs
- PageThemeParser.cs
- SortQuery.cs
- EntityDataSourceSelectedEventArgs.cs
- GeneratedCodeAttribute.cs
- MinMaxParagraphWidth.cs
- TypeDescriptionProvider.cs
- PathNode.cs
- TemplatedMailWebEventProvider.cs
- EntityReference.cs
- ResourceDescriptionAttribute.cs
- keycontainerpermission.cs
- FontSourceCollection.cs
- DoWorkEventArgs.cs
- Automation.cs
- ExceptionWrapper.cs
- DataGridViewRowConverter.cs
- TypeLoadException.cs
- CachedCompositeFamily.cs
- BridgeDataRecord.cs
- Conditional.cs
- ServiceOperationParameter.cs
- InterleavedZipPartStream.cs
- Light.cs
- InfoCardSymmetricCrypto.cs
- CTreeGenerator.cs
- Control.cs
- ProjectionPathBuilder.cs
- DragCompletedEventArgs.cs
- SecurityManager.cs
- DataGridBoolColumn.cs
- XamlPointCollectionSerializer.cs
- Win32Exception.cs
- SendKeys.cs
- Transform3D.cs
- EntityWrapperFactory.cs
- HwndSourceKeyboardInputSite.cs
- Padding.cs
- OrderByExpression.cs
- TextLine.cs
- SafeCloseHandleCritical.cs
- AvTraceFormat.cs
- StartUpEventArgs.cs
- StylusOverProperty.cs
- Literal.cs
- SqlInternalConnection.cs
- StickyNote.cs
- FileEnumerator.cs
- ScriptingWebServicesSectionGroup.cs
- BaseProcessProtocolHandler.cs
- ControlBuilder.cs
- MasterPageCodeDomTreeGenerator.cs
- RegexWorker.cs
- IdnMapping.cs
- ProfessionalColorTable.cs
- WebPartZoneCollection.cs
- CryptoApi.cs
- ControlAdapter.cs
- ObjectViewQueryResultData.cs
- FixedTextBuilder.cs
- DoubleAnimationUsingKeyFrames.cs
- ScrollEvent.cs
- DefaultProxySection.cs
- DictionaryMarkupSerializer.cs
- SerializerProvider.cs
- WindowsPen.cs
- TraceData.cs
- Rotation3D.cs