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
- FreezableDefaultValueFactory.cs
- DataGridViewCellStyleConverter.cs
- UnauthorizedAccessException.cs
- PostBackOptions.cs
- IdentityHolder.cs
- EditorPartCollection.cs
- DataObjectAttribute.cs
- PanelStyle.cs
- PanelStyle.cs
- SharedStream.cs
- WebPartCatalogCloseVerb.cs
- DataGridViewHeaderCell.cs
- SqlDataSourceRefreshSchemaForm.cs
- DoubleLink.cs
- UserNameSecurityToken.cs
- XmlDataCollection.cs
- XmlSchemaAttributeGroupRef.cs
- ResizeGrip.cs
- categoryentry.cs
- EntityProviderServices.cs
- AspNetCompatibilityRequirementsMode.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- DataContractAttribute.cs
- FamilyTypefaceCollection.cs
- TagPrefixInfo.cs
- DataGridColumnCollection.cs
- clipboard.cs
- SecurityKeyIdentifier.cs
- SequentialUshortCollection.cs
- XmlCollation.cs
- _BaseOverlappedAsyncResult.cs
- ComponentConverter.cs
- MaskDesignerDialog.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- DescriptionAttribute.cs
- SequentialWorkflowHeaderFooter.cs
- CodeSnippetTypeMember.cs
- SqlDependency.cs
- QilName.cs
- ExtensionSurface.cs
- WmlTextBoxAdapter.cs
- dataSvcMapFileLoader.cs
- CodeTypeReferenceCollection.cs
- TranslateTransform.cs
- DataError.cs
- FilterQuery.cs
- EntityCommandCompilationException.cs
- SystemIPInterfaceProperties.cs
- MetadataFile.cs
- EndpointConfigContainer.cs
- CroppedBitmap.cs
- FormViewDeleteEventArgs.cs
- Decimal.cs
- StringReader.cs
- InvalidProgramException.cs
- DesignerDataSourceView.cs
- FloatSumAggregationOperator.cs
- CodeAttributeArgument.cs
- InfoCardTrace.cs
- ResourcesBuildProvider.cs
- SafeTokenHandle.cs
- BitmapFrameDecode.cs
- ZipIOLocalFileDataDescriptor.cs
- StateFinalizationActivity.cs
- WorkflowDesignerMessageFilter.cs
- MessageEnumerator.cs
- AnnotationHighlightLayer.cs
- WindowsComboBox.cs
- ArrayWithOffset.cs
- XmlException.cs
- smtpconnection.cs
- LifetimeServices.cs
- RenderingEventArgs.cs
- Point3DCollectionConverter.cs
- BaseResourcesBuildProvider.cs
- LostFocusEventManager.cs
- EntityDataSourceStatementEditorForm.cs
- SafeNativeMethods.cs
- ListItemCollection.cs
- ExpandableObjectConverter.cs
- DataGridViewToolTip.cs
- Lock.cs
- EventLogEntryCollection.cs
- ComplexTypeEmitter.cs
- CodeDelegateCreateExpression.cs
- QueryAccessibilityHelpEvent.cs
- DataGridCellEditEndingEventArgs.cs
- UITypeEditor.cs
- FieldBuilder.cs
- TypefaceMap.cs
- BindableTemplateBuilder.cs
- DataGridViewTextBoxCell.cs
- SmiContext.cs
- HttpSessionStateBase.cs
- TagPrefixInfo.cs
- GrammarBuilderPhrase.cs
- RowToFieldTransformer.cs
- DispatcherExceptionFilterEventArgs.cs
- CodeLabeledStatement.cs
- DesignerToolStripControlHost.cs