Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TemplatePropertyEntry.cs
- MetadataSource.cs
- TypePresenter.xaml.cs
- XmlSchemaInferenceException.cs
- HtmlTableCellCollection.cs
- SessionStateModule.cs
- DateTime.cs
- Error.cs
- GridErrorDlg.cs
- ErrorCodes.cs
- JsonReaderWriterFactory.cs
- ParsedAttributeCollection.cs
- TagMapInfo.cs
- FileUpload.cs
- Decorator.cs
- JavaScriptSerializer.cs
- ObjectDataSourceEventArgs.cs
- IDQuery.cs
- DataGridViewColumnHeaderCell.cs
- HwndStylusInputProvider.cs
- LinkedResourceCollection.cs
- XmlAttributeCollection.cs
- Models.cs
- XmlSchemaCompilationSettings.cs
- XmlAnyElementAttribute.cs
- InputDevice.cs
- GeneralTransform2DTo3DTo2D.cs
- CaseInsensitiveComparer.cs
- RemotingConfiguration.cs
- EditorOptionAttribute.cs
- RowUpdatingEventArgs.cs
- AstTree.cs
- UnknownBitmapEncoder.cs
- TextSelection.cs
- FolderBrowserDialogDesigner.cs
- UpdatePanelControlTrigger.cs
- TextEditorTables.cs
- ModelUIElement3D.cs
- HeaderCollection.cs
- MultipartContentParser.cs
- BitmapEncoder.cs
- ExpressionConverter.cs
- ReadOnlyAttribute.cs
- GrammarBuilderDictation.cs
- AsyncOperationManager.cs
- AssociationSetEnd.cs
- WinFormsSecurity.cs
- DbDataRecord.cs
- LineVisual.cs
- PageBreakRecord.cs
- RoutedPropertyChangedEventArgs.cs
- ClaimSet.cs
- LocationUpdates.cs
- RuntimeResourceSet.cs
- oledbconnectionstring.cs
- ProjectionCamera.cs
- CodeTypeDeclarationCollection.cs
- TreeNodeSelectionProcessor.cs
- WebPartCollection.cs
- TypeExtensionConverter.cs
- BaseParagraph.cs
- WebContentFormatHelper.cs
- TabControlEvent.cs
- ReflectionTypeLoadException.cs
- OperationCanceledException.cs
- ClientTargetSection.cs
- WindowsNonControl.cs
- ObjectDataSourceView.cs
- CodeTryCatchFinallyStatement.cs
- CodeAttachEventStatement.cs
- ValidationResult.cs
- DependencyObjectProvider.cs
- AspNetSynchronizationContext.cs
- LineGeometry.cs
- MemoryStream.cs
- IntSecurity.cs
- AttributeCollection.cs
- NotSupportedException.cs
- MediaTimeline.cs
- TypeConverter.cs
- AsymmetricSignatureFormatter.cs
- GCHandleCookieTable.cs
- FormatException.cs
- TransformGroup.cs
- AttachedAnnotation.cs
- DesignerProperties.cs
- StylusButtonEventArgs.cs
- PropertyEmitterBase.cs
- DataSetSchema.cs
- ACL.cs
- EncryptedXml.cs
- EventlogProvider.cs
- XmlDeclaration.cs
- TranslateTransform.cs
- NonVisualControlAttribute.cs
- TransformGroup.cs
- NumberSubstitution.cs
- DLinqAssociationProvider.cs
- StrongNameKeyPair.cs
- SplitterEvent.cs