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
- DeferrableContentConverter.cs
- UnaryNode.cs
- SimpleModelProvider.cs
- TextRunProperties.cs
- GacUtil.cs
- AudioStateChangedEventArgs.cs
- FontFamily.cs
- TemplatedAdorner.cs
- StringResourceManager.cs
- ManualWorkflowSchedulerService.cs
- TimelineCollection.cs
- WindowsStatusBar.cs
- ProfileSettings.cs
- VisualCollection.cs
- HebrewCalendar.cs
- XmlSchemaException.cs
- AuthenticateEventArgs.cs
- TemplateColumn.cs
- DeflateStream.cs
- ProxyWebPartManager.cs
- XmlSerializer.cs
- Debugger.cs
- TagElement.cs
- WorkflowValidationFailedException.cs
- RelativeSource.cs
- PeerTransportCredentialType.cs
- BookmarkInfo.cs
- ChannelServices.cs
- TreeBuilderXamlTranslator.cs
- PtsHost.cs
- DoubleLink.cs
- ManageRequest.cs
- SHA256CryptoServiceProvider.cs
- future.cs
- ConnectionOrientedTransportBindingElement.cs
- DateTimeAutomationPeer.cs
- WebConfigurationFileMap.cs
- ProtocolsConfiguration.cs
- DesignerExtenders.cs
- Tool.cs
- PKCS1MaskGenerationMethod.cs
- SortExpressionBuilder.cs
- CriticalFinalizerObject.cs
- DispatchWrapper.cs
- sqlnorm.cs
- CustomTokenProvider.cs
- LongValidator.cs
- RecordsAffectedEventArgs.cs
- XmlSchemaValidationException.cs
- ClassicBorderDecorator.cs
- CqlLexerHelpers.cs
- TrackBar.cs
- XmlObjectSerializerWriteContextComplex.cs
- BamlTreeUpdater.cs
- DispatcherSynchronizationContext.cs
- XmlSchemaAnnotated.cs
- HttpCacheVaryByContentEncodings.cs
- shaper.cs
- TileBrush.cs
- DefaultParameterValueAttribute.cs
- SystemIPGlobalStatistics.cs
- DataSetFieldSchema.cs
- Policy.cs
- XPathAncestorQuery.cs
- securitymgrsite.cs
- DeobfuscatingStream.cs
- TextBoxDesigner.cs
- ObjectDataProvider.cs
- StrokeNodeOperations2.cs
- SrgsSemanticInterpretationTag.cs
- UnmanagedMemoryStreamWrapper.cs
- DbParameterCollectionHelper.cs
- DataControlFieldCell.cs
- SyntaxCheck.cs
- Crc32.cs
- PropertyItemInternal.cs
- MenuItemStyleCollection.cs
- CalendarModeChangedEventArgs.cs
- IPHostEntry.cs
- DataGridItemAutomationPeer.cs
- ComponentSerializationService.cs
- DataGridRelationshipRow.cs
- RecordManager.cs
- AssemblyInfo.cs
- PackageFilter.cs
- TableHeaderCell.cs
- ProviderManager.cs
- DataComponentGenerator.cs
- ConfigXmlDocument.cs
- PowerModeChangedEventArgs.cs
- ImplicitInputBrush.cs
- Stroke2.cs
- LinqDataSourceValidationException.cs
- MatchAttribute.cs
- DoubleLinkList.cs
- MatrixTransform3D.cs
- InteropExecutor.cs
- FormsAuthenticationEventArgs.cs
- BooleanStorage.cs
- UserControl.cs