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
- EntityDataSourceStatementEditorForm.cs
- TableRow.cs
- InterleavedZipPartStream.cs
- UpdateRecord.cs
- C14NUtil.cs
- SecurityDocument.cs
- LassoSelectionBehavior.cs
- XmlQueryOutput.cs
- PackageRelationshipSelector.cs
- KeyedCollection.cs
- ExpressionBindingCollection.cs
- ScriptingAuthenticationServiceSection.cs
- XhtmlBasicTextBoxAdapter.cs
- GroupBox.cs
- AdvancedBindingEditor.cs
- WebBaseEventKeyComparer.cs
- SignedPkcs7.cs
- CharacterBufferReference.cs
- BinaryCommonClasses.cs
- WebBrowserHelper.cs
- AttachedProperty.cs
- SolidBrush.cs
- Crypto.cs
- CompositeDataBoundControl.cs
- GenericParameterDataContract.cs
- LongSumAggregationOperator.cs
- GridViewColumnHeaderAutomationPeer.cs
- XmlSchemaSimpleTypeList.cs
- UserControlBuildProvider.cs
- FileReservationCollection.cs
- NativeMethods.cs
- HorizontalAlignConverter.cs
- FramingEncoders.cs
- DataGridItemEventArgs.cs
- UnsafeMethods.cs
- SourceFileBuildProvider.cs
- TextBox.cs
- XmlStreamNodeWriter.cs
- DataSourceCache.cs
- DataGridViewCellStyleConverter.cs
- HttpFileCollectionBase.cs
- CloseCollectionAsyncResult.cs
- SynchronizedPool.cs
- MobileControl.cs
- SemaphoreSlim.cs
- TargetConverter.cs
- ClientSession.cs
- GAC.cs
- XPathNodeInfoAtom.cs
- Soap11ServerProtocol.cs
- HtmlEncodedRawTextWriter.cs
- FactoryId.cs
- SqlLiftWhereClauses.cs
- ToolStripPanelRenderEventArgs.cs
- InputElement.cs
- DataServiceHost.cs
- BinaryReader.cs
- ExpressionEditorAttribute.cs
- GeometryDrawing.cs
- CompilerCollection.cs
- SynchronizationContextHelper.cs
- Documentation.cs
- XmlDataSourceView.cs
- __Filters.cs
- IsolatedStorageFile.cs
- SrgsToken.cs
- TabPage.cs
- DiffuseMaterial.cs
- Annotation.cs
- ObservableCollectionDefaultValueFactory.cs
- DataSourceHelper.cs
- PackWebRequestFactory.cs
- UserNamePasswordClientCredential.cs
- MimeBasePart.cs
- Int16Converter.cs
- ReceiveContext.cs
- DataGridTemplateColumn.cs
- OledbConnectionStringbuilder.cs
- ContentType.cs
- TouchFrameEventArgs.cs
- GridErrorDlg.cs
- RemotingConfigParser.cs
- BitmapCacheBrush.cs
- StateItem.cs
- ProjectionCamera.cs
- InternalResources.cs
- CollectionBase.cs
- ExecutionTracker.cs
- PropertyDescriptor.cs
- ConcurrentQueue.cs
- AttributeUsageAttribute.cs
- MessageQueuePermission.cs
- RelationshipNavigation.cs
- Exceptions.cs
- NameSpaceExtractor.cs
- DataBoundControl.cs
- RequestContextBase.cs
- FtpRequestCacheValidator.cs
- TrackingParameters.cs
- StateItem.cs