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
- WebPartEventArgs.cs
- GatewayDefinition.cs
- RotationValidation.cs
- CommandExpr.cs
- MgmtResManager.cs
- DefaultProxySection.cs
- HtmlLink.cs
- TextTrailingWordEllipsis.cs
- ResolveNameEventArgs.cs
- SwitchElementsCollection.cs
- FreezableCollection.cs
- StrongNameUtility.cs
- OdbcRowUpdatingEvent.cs
- XmlSchemaRedefine.cs
- SystemInfo.cs
- FormViewRow.cs
- CodeCommentStatement.cs
- ZipIOModeEnforcingStream.cs
- ServiceDesigner.xaml.cs
- EventProperty.cs
- ContextQuery.cs
- BooleanKeyFrameCollection.cs
- UDPClient.cs
- StorageAssociationTypeMapping.cs
- HttpContextWrapper.cs
- EndpointAddressMessageFilterTable.cs
- SizeFConverter.cs
- CompressedStack.cs
- StringSorter.cs
- ToolStripSettings.cs
- ArrayList.cs
- BidPrivateBase.cs
- ToolStripItemTextRenderEventArgs.cs
- CommonRemoteMemoryBlock.cs
- ScriptReference.cs
- MethodCallConverter.cs
- ConnectionStringSettingsCollection.cs
- FixUpCollection.cs
- DomainConstraint.cs
- OutOfMemoryException.cs
- ViewGenerator.cs
- FormatException.cs
- AttachedPropertiesService.cs
- RegisteredExpandoAttribute.cs
- FixedPosition.cs
- Encoding.cs
- ConfigurationManagerInternalFactory.cs
- BasicDesignerLoader.cs
- IntSecurity.cs
- PartialArray.cs
- DrawingContext.cs
- KeyValueSerializer.cs
- JpegBitmapEncoder.cs
- ToolStripItemGlyph.cs
- FutureFactory.cs
- BaseComponentEditor.cs
- MiniCustomAttributeInfo.cs
- TabPageDesigner.cs
- RangeContentEnumerator.cs
- AdRotatorDesigner.cs
- ObjectConverter.cs
- NameValuePair.cs
- CallbackValidatorAttribute.cs
- CapabilitiesPattern.cs
- ScrollPattern.cs
- SqlEnums.cs
- CounterSetInstance.cs
- OperationFormatStyle.cs
- IIS7WorkerRequest.cs
- PlaceHolder.cs
- DetailsViewDeleteEventArgs.cs
- SimpleLine.cs
- SecurityCookieModeValidator.cs
- SimpleRecyclingCache.cs
- VoiceChangeEventArgs.cs
- NavigationEventArgs.cs
- ToolStripPanel.cs
- PenContexts.cs
- SqlCommandSet.cs
- CapiSafeHandles.cs
- SafeCertificateStore.cs
- SqlIdentifier.cs
- CircleEase.cs
- XmlSerializerSection.cs
- EntityProviderServices.cs
- ReachFixedPageSerializerAsync.cs
- _NestedSingleAsyncResult.cs
- Point3DCollection.cs
- WindowsScroll.cs
- WsiProfilesElementCollection.cs
- DataBoundControlHelper.cs
- SingleAnimation.cs
- BaseValidator.cs
- DeferredReference.cs
- AppDomainCompilerProxy.cs
- ExtendedPropertyInfo.cs
- SafeReversePInvokeHandle.cs
- SimpleTypeResolver.cs
- LifetimeServices.cs
- ImageMapEventArgs.cs