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
- IsolationInterop.cs
- OleDbCommandBuilder.cs
- NewItemsContextMenuStrip.cs
- ObjectQueryProvider.cs
- EdmTypeAttribute.cs
- WebControl.cs
- WebBrowserEvent.cs
- DetailsViewPagerRow.cs
- GeometryGroup.cs
- SqlCacheDependencyDatabaseCollection.cs
- KeyConstraint.cs
- ClickablePoint.cs
- NavigateEvent.cs
- CircleHotSpot.cs
- UnitySerializationHolder.cs
- BitmapEffectDrawingContextState.cs
- Queue.cs
- ConfigsHelper.cs
- TaskResultSetter.cs
- DashStyle.cs
- CheckBox.cs
- GregorianCalendarHelper.cs
- CodeTypeParameterCollection.cs
- MatrixTransform3D.cs
- PageThemeCodeDomTreeGenerator.cs
- TaiwanCalendar.cs
- TransformerInfo.cs
- ButtonField.cs
- ListViewItemMouseHoverEvent.cs
- ElementNotAvailableException.cs
- ToolStripLocationCancelEventArgs.cs
- TextPenaltyModule.cs
- DetailsViewInsertedEventArgs.cs
- XmlDataImplementation.cs
- ToolboxBitmapAttribute.cs
- ElementMarkupObject.cs
- AmbientValueAttribute.cs
- _LoggingObject.cs
- MarshalByValueComponent.cs
- SafeEventHandle.cs
- ErrorHandlerFaultInfo.cs
- SqlBulkCopyColumnMappingCollection.cs
- WindowsImpersonationContext.cs
- XmlDocumentFragment.cs
- XPathNodeInfoAtom.cs
- ReadOnlyDictionary.cs
- RenderDataDrawingContext.cs
- MissingManifestResourceException.cs
- PropertyItemInternal.cs
- ResourceSet.cs
- DoubleConverter.cs
- SqlReferenceCollection.cs
- Hashtable.cs
- ParameterReplacerVisitor.cs
- DesignerAutoFormat.cs
- NodeFunctions.cs
- Html32TextWriter.cs
- NameValueFileSectionHandler.cs
- TextViewSelectionProcessor.cs
- DataTableMapping.cs
- ScopedKnownTypes.cs
- DataGridViewLinkCell.cs
- IIS7UserPrincipal.cs
- TraceSwitch.cs
- ValueQuery.cs
- ToggleProviderWrapper.cs
- SqlWebEventProvider.cs
- TextEditorTyping.cs
- IsolatedStorageException.cs
- HttpTransportElement.cs
- HttpInputStream.cs
- HtmlUtf8RawTextWriter.cs
- DrawToolTipEventArgs.cs
- RepeatButton.cs
- ConstructorNeedsTagAttribute.cs
- SimpleLine.cs
- NativeWrapper.cs
- XmlRawWriterWrapper.cs
- EventInfo.cs
- DrawingContextWalker.cs
- DiscoveryOperationContext.cs
- PaintEvent.cs
- _AuthenticationState.cs
- WebColorConverter.cs
- DataPagerFieldCollection.cs
- KeyboardEventArgs.cs
- TdsParserStateObject.cs
- GeometryConverter.cs
- TableCellCollection.cs
- AdapterUtil.cs
- TableChangeProcessor.cs
- UserMapPath.cs
- SystemNetworkInterface.cs
- RadioButton.cs
- ObfuscateAssemblyAttribute.cs
- CodeGenerator.cs
- ProviderMetadataCachedInformation.cs
- DynamicMethod.cs
- TraceXPathNavigator.cs
- OutputCacheSettingsSection.cs