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
- ScriptMethodAttribute.cs
- SafeLocalAllocation.cs
- RawUIStateInputReport.cs
- StyleCollection.cs
- Label.cs
- Token.cs
- SoapSchemaExporter.cs
- DataGridHeaderBorder.cs
- _IPv6Address.cs
- GridViewColumnCollection.cs
- InternalConfigRoot.cs
- ProxyAttribute.cs
- TouchFrameEventArgs.cs
- SemanticResolver.cs
- ArrayElementGridEntry.cs
- CookieProtection.cs
- FileIOPermission.cs
- SymLanguageType.cs
- FormsAuthentication.cs
- SizeAnimation.cs
- CollectionViewGroupInternal.cs
- DiagnosticTraceSource.cs
- OleDbParameter.cs
- MaskedTextBox.cs
- ObjectDataSourceEventArgs.cs
- MediaPlayerState.cs
- TextSelection.cs
- RequiredFieldValidator.cs
- HuffCodec.cs
- AnimationClock.cs
- Win32NamedPipes.cs
- Bookmark.cs
- String.cs
- FixedDocumentPaginator.cs
- SamlAuthorizationDecisionStatement.cs
- ContextBase.cs
- tibetanshape.cs
- CompilerHelpers.cs
- ToolStripSeparatorRenderEventArgs.cs
- Stack.cs
- SslSecurityTokenParameters.cs
- Preprocessor.cs
- Simplifier.cs
- Nodes.cs
- ContextStaticAttribute.cs
- TransactionFilter.cs
- _Semaphore.cs
- EventData.cs
- GridViewRowPresenter.cs
- PolicyManager.cs
- SQLRoleProvider.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- BitmapEffectDrawingContent.cs
- ConnectionInterfaceCollection.cs
- WindowsScrollBarBits.cs
- Soap12ProtocolReflector.cs
- SecurityException.cs
- EdmFunctionAttribute.cs
- HttpWebResponse.cs
- IDReferencePropertyAttribute.cs
- compensatingcollection.cs
- CodeSubDirectory.cs
- XslTransform.cs
- x509utils.cs
- XmlConvert.cs
- SapiInterop.cs
- Catch.cs
- ViewSimplifier.cs
- DataControlCommands.cs
- UrlMappingCollection.cs
- XpsLiterals.cs
- ZipPackagePart.cs
- TdsEnums.cs
- SqlDeflator.cs
- AspNetSynchronizationContext.cs
- DodSequenceMerge.cs
- OracleDataAdapter.cs
- ScriptBehaviorDescriptor.cs
- Rectangle.cs
- HandleCollector.cs
- CredentialCache.cs
- DecimalConverter.cs
- OneOfElement.cs
- DesignerAttribute.cs
- OleDbStruct.cs
- OdbcHandle.cs
- DocumentViewerBase.cs
- FramingFormat.cs
- TextAction.cs
- RtfToXamlLexer.cs
- SerializationSectionGroup.cs
- PerfService.cs
- RouteData.cs
- SqlConnectionManager.cs
- ContextStaticAttribute.cs
- CommandBindingCollection.cs
- RefreshPropertiesAttribute.cs
- DelayedRegex.cs
- NavigationPropertyAccessor.cs
- SystemColors.cs