Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- FontCacheUtil.cs
- PropertyTab.cs
- QuaternionValueSerializer.cs
- MatrixKeyFrameCollection.cs
- EventPrivateKey.cs
- LinqDataSourceView.cs
- BinaryWriter.cs
- MsmqProcessProtocolHandler.cs
- DefaultBindingPropertyAttribute.cs
- CodeBlockBuilder.cs
- RelatedPropertyManager.cs
- SplitterDesigner.cs
- CultureSpecificCharacterBufferRange.cs
- HttpContextWrapper.cs
- SqlInternalConnection.cs
- CustomErrorsSectionWrapper.cs
- DbProviderFactoriesConfigurationHandler.cs
- ByeOperationAsyncResult.cs
- TextLineBreak.cs
- RoutedEventHandlerInfo.cs
- Scheduler.cs
- RadioButtonFlatAdapter.cs
- ToolStripContainer.cs
- EditorZone.cs
- RuntimeConfigLKG.cs
- TypeElement.cs
- UrlRoutingHandler.cs
- ProxyManager.cs
- UpdatePanelControlTrigger.cs
- ConnectionPoint.cs
- PageBreakRecord.cs
- unsafenativemethodsother.cs
- ConfigPathUtility.cs
- FontUnit.cs
- SqlUtils.cs
- Sorting.cs
- ListItemsPage.cs
- DataGridViewRowPostPaintEventArgs.cs
- AssemblyBuilderData.cs
- XPathBinder.cs
- Graphics.cs
- Math.cs
- ScrollItemProviderWrapper.cs
- KnowledgeBase.cs
- ThaiBuddhistCalendar.cs
- IntranetCredentialPolicy.cs
- FieldNameLookup.cs
- CollectionType.cs
- DefaultEventAttribute.cs
- InvalidEnumArgumentException.cs
- XsdDuration.cs
- RegexWorker.cs
- ComponentEditorForm.cs
- XmlReflectionMember.cs
- GroupDescription.cs
- SequentialOutput.cs
- ParagraphResult.cs
- AnnotationResourceCollection.cs
- DebuggerAttributes.cs
- DataContractSerializerOperationFormatter.cs
- AssertFilter.cs
- EventSetterHandlerConverter.cs
- AttachInfo.cs
- TextBoxView.cs
- BufferedWebEventProvider.cs
- DataListItemCollection.cs
- DigitalSignature.cs
- Activator.cs
- DataGridViewSelectedCellCollection.cs
- CqlQuery.cs
- ByteStreamGeometryContext.cs
- IncrementalHitTester.cs
- GridViewPageEventArgs.cs
- ControllableStoryboardAction.cs
- SmtpException.cs
- ColorConvertedBitmap.cs
- Subtree.cs
- Int32Rect.cs
- PolicyLevel.cs
- ItemChangedEventArgs.cs
- URIFormatException.cs
- DbCommandTree.cs
- StopStoryboard.cs
- XmlSchemaInfo.cs
- SuppressMessageAttribute.cs
- HintTextMaxWidthConverter.cs
- SQLDouble.cs
- wgx_commands.cs
- IIS7WorkerRequest.cs
- EventEntry.cs
- _ScatterGatherBuffers.cs
- Mappings.cs
- documentsequencetextview.cs
- ViewManagerAttribute.cs
- SqlGatherProducedAliases.cs
- DbModificationCommandTree.cs
- TaskFileService.cs
- ForEachAction.cs
- WebPartManager.cs
- TabPage.cs