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
- ErrorStyle.cs
- DataKeyPropertyAttribute.cs
- SyndicationPerson.cs
- TransformedBitmap.cs
- DataTrigger.cs
- Recipient.cs
- CodeCommentStatementCollection.cs
- And.cs
- Base64Decoder.cs
- FacetChecker.cs
- ParameterToken.cs
- TableItemStyle.cs
- ToolStripContainer.cs
- XPathExpr.cs
- OrCondition.cs
- ImpersonateTokenRef.cs
- SmuggledIUnknown.cs
- ConfigurationValues.cs
- PolygonHotSpot.cs
- NestedContainer.cs
- StrongNameKeyPair.cs
- ContextItemManager.cs
- CollectionConverter.cs
- ViewManager.cs
- OSEnvironmentHelper.cs
- DoubleUtil.cs
- ObjectViewListener.cs
- AuthenticationManager.cs
- RequestDescription.cs
- LinqDataSource.cs
- ListView.cs
- MenuItemBindingCollection.cs
- ThreadSafeList.cs
- TransformGroup.cs
- Int32RectConverter.cs
- InputDevice.cs
- ObjectDataSourceMethodEventArgs.cs
- GacUtil.cs
- XamlStyleSerializer.cs
- TdsParserSessionPool.cs
- Matrix3DValueSerializer.cs
- HttpHeaderCollection.cs
- AlternateView.cs
- DrawingDrawingContext.cs
- DataGridViewCheckBoxCell.cs
- ToolBarTray.cs
- HwndSource.cs
- PrintDialogException.cs
- TypeForwardedToAttribute.cs
- SecurityRuntime.cs
- EncryptedType.cs
- DecimalConstantAttribute.cs
- CqlWriter.cs
- StreamWriter.cs
- ValidatedMobileControlConverter.cs
- SeverityFilter.cs
- CustomAttributeSerializer.cs
- TagNameToTypeMapper.cs
- DataRecord.cs
- StructuralCache.cs
- Popup.cs
- EpmHelper.cs
- ChangeTracker.cs
- ConnectionPointCookie.cs
- ClientConfigurationHost.cs
- Attribute.cs
- TextContainerChangedEventArgs.cs
- SqlUDTStorage.cs
- ConstraintConverter.cs
- DiscoveryOperationContext.cs
- RSAProtectedConfigurationProvider.cs
- ObservableDictionary.cs
- IsolationInterop.cs
- TypeNameHelper.cs
- XmlObjectSerializerReadContextComplexJson.cs
- LookupBindingPropertiesAttribute.cs
- Tag.cs
- EventRecordWrittenEventArgs.cs
- DiscoveryMessageSequence.cs
- MediaSystem.cs
- MsmqIntegrationBindingElement.cs
- SmiMetaData.cs
- SelectionRange.cs
- OdbcConnection.cs
- TextTreeTextElementNode.cs
- TiffBitmapEncoder.cs
- AutomationPatternInfo.cs
- PropertyNames.cs
- RoutedEventValueSerializer.cs
- HttpPostServerProtocol.cs
- DbTypeMap.cs
- SelectedGridItemChangedEvent.cs
- HitTestFilterBehavior.cs
- TabControl.cs
- Operators.cs
- BamlWriter.cs
- ReflectionTypeLoadException.cs
- FixedSOMLineRanges.cs
- XmlStreamStore.cs
- XmlQueryContext.cs