Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- Funcletizer.cs
- PriorityChain.cs
- SpeechSynthesizer.cs
- XPathExpr.cs
- FontFamily.cs
- xml.cs
- ComboBoxDesigner.cs
- ObjectSecurity.cs
- SignatureDescription.cs
- Transform3D.cs
- DataGridHyperlinkColumn.cs
- CellParagraph.cs
- LogicalMethodInfo.cs
- StorageComplexPropertyMapping.cs
- ParserContext.cs
- LongAverageAggregationOperator.cs
- AppSettingsExpressionBuilder.cs
- XmlText.cs
- EntityStoreSchemaGenerator.cs
- ObjectViewListener.cs
- UseAttributeSetsAction.cs
- SignedXmlDebugLog.cs
- SymbolResolver.cs
- PixelFormats.cs
- MasterPage.cs
- MissingSatelliteAssemblyException.cs
- CalendarTable.cs
- HashAlgorithm.cs
- cache.cs
- BaseComponentEditor.cs
- XmlnsPrefixAttribute.cs
- RectIndependentAnimationStorage.cs
- InvalidateEvent.cs
- TypeForwardedToAttribute.cs
- WinHttpWebProxyFinder.cs
- ByteStack.cs
- RegexRunner.cs
- WebPartConnectionsConnectVerb.cs
- AsymmetricAlgorithm.cs
- SafeProcessHandle.cs
- PolyLineSegment.cs
- UInt16Converter.cs
- RuntimeIdentifierPropertyAttribute.cs
- IgnorePropertiesAttribute.cs
- MultiSelectRootGridEntry.cs
- SiteMapDataSourceView.cs
- WebPartConnectionCollection.cs
- EntityDataSourceWrapperCollection.cs
- EntityDataSourceConfigureObjectContext.cs
- RuntimeConfigurationRecord.cs
- InvalidCommandTreeException.cs
- DataServiceRequest.cs
- DragEventArgs.cs
- SystemNetworkInterface.cs
- ListItemViewControl.cs
- DesignTimeXamlWriter.cs
- SchemaImporterExtension.cs
- InstanceCreationEditor.cs
- ResourceType.cs
- SEHException.cs
- SHA256.cs
- TokenBasedSet.cs
- TraceHandlerErrorFormatter.cs
- DetailsViewDeletedEventArgs.cs
- TcpConnectionPool.cs
- EntityDataSourceReferenceGroup.cs
- ErrorEventArgs.cs
- GifBitmapDecoder.cs
- RelationshipConverter.cs
- MdiWindowListStrip.cs
- TextSelectionHelper.cs
- BackgroundWorker.cs
- XmlSchemaCompilationSettings.cs
- PrinterSettings.cs
- TableLayoutCellPaintEventArgs.cs
- ComboBoxItem.cs
- DoubleAnimation.cs
- TextSelection.cs
- TextServicesDisplayAttributePropertyRanges.cs
- MenuItemBindingCollection.cs
- objectresult_tresulttype.cs
- NotifyParentPropertyAttribute.cs
- SmtpNtlmAuthenticationModule.cs
- EventWaitHandle.cs
- CacheOutputQuery.cs
- UrlPath.cs
- XmlAttributeHolder.cs
- KeyConstraint.cs
- HashHelper.cs
- DefaultSection.cs
- PersonalizationProviderHelper.cs
- WebServiceEnumData.cs
- ButtonChrome.cs
- PropertyMap.cs
- Emitter.cs
- PixelShader.cs
- LoadRetryAsyncResult.cs
- MessagePartSpecification.cs
- OLEDB_Util.cs
- ScriptServiceAttribute.cs