Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- TargetConverter.cs
- TdsParserHelperClasses.cs
- StringArrayConverter.cs
- DataViewManager.cs
- UdpDiscoveryEndpointProvider.cs
- ActivityTypeResolver.xaml.cs
- AuthenticatedStream.cs
- OletxVolatileEnlistment.cs
- ByteStreamGeometryContext.cs
- WebDescriptionAttribute.cs
- BinHexDecoder.cs
- VideoDrawing.cs
- UnmanagedBitmapWrapper.cs
- DbDeleteCommandTree.cs
- Stacktrace.cs
- Encoding.cs
- IisHelper.cs
- PropertyChangingEventArgs.cs
- WindowsBrush.cs
- BindingListCollectionView.cs
- RightsController.cs
- StrongName.cs
- ZoneButton.cs
- PageSetupDialog.cs
- SafeMarshalContext.cs
- CollectionContainer.cs
- DataGridItem.cs
- COSERVERINFO.cs
- DirectionalLight.cs
- CompilerGeneratedAttribute.cs
- XamlInt32CollectionSerializer.cs
- TraceUtility.cs
- TextEditorThreadLocalStore.cs
- TagMapCollection.cs
- Type.cs
- PropertyGridEditorPart.cs
- RepeaterCommandEventArgs.cs
- LayoutEditorPart.cs
- SHA1.cs
- AsymmetricAlgorithm.cs
- BindingNavigatorDesigner.cs
- RegistryDataKey.cs
- InvokeGenerator.cs
- HandlerBase.cs
- SHA384Managed.cs
- HttpRuntime.cs
- GlobalizationSection.cs
- HttpServerVarsCollection.cs
- TemplatePagerField.cs
- PerfCounterSection.cs
- ToolStripRenderer.cs
- SignedPkcs7.cs
- SubpageParagraph.cs
- SmtpCommands.cs
- Matrix3D.cs
- BulletChrome.cs
- CriticalFinalizerObject.cs
- ColorContextHelper.cs
- precedingquery.cs
- ReadWriteObjectLock.cs
- ItemCheckedEvent.cs
- ContentElement.cs
- DefaultObjectSerializer.cs
- ComplexType.cs
- designeractionbehavior.cs
- RequestResizeEvent.cs
- ImageSource.cs
- PropertyIdentifier.cs
- BuildProviderCollection.cs
- Section.cs
- PTUtility.cs
- RbTree.cs
- XPathSingletonIterator.cs
- GradientSpreadMethodValidation.cs
- InheritanceAttribute.cs
- CryptoApi.cs
- xml.cs
- BulletChrome.cs
- ConfigurationManager.cs
- Cursor.cs
- CommentEmitter.cs
- TabControlToolboxItem.cs
- SettingsAttributeDictionary.cs
- DataKeyArray.cs
- DataMemberAttribute.cs
- SelectorItemAutomationPeer.cs
- ExpressionBindingCollection.cs
- MgmtConfigurationRecord.cs
- ProviderManager.cs
- PeerCustomResolverBindingElement.cs
- SafeLibraryHandle.cs
- MutexSecurity.cs
- RoleService.cs
- SplitContainer.cs
- DispatcherProcessingDisabled.cs
- BaseProcessor.cs
- PanelDesigner.cs
- BuildProviderAppliesToAttribute.cs
- PointAnimationUsingPath.cs
- EntityContainer.cs