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
- XLinq.cs
- ObfuscateAssemblyAttribute.cs
- CollectionView.cs
- DataGridRelationshipRow.cs
- FormCollection.cs
- GACMembershipCondition.cs
- NonClientArea.cs
- AppSettingsExpressionBuilder.cs
- SoapExtensionTypeElement.cs
- UIElement3D.cs
- DBCommand.cs
- FormViewDeleteEventArgs.cs
- odbcmetadatacolumnnames.cs
- FacetEnabledSchemaElement.cs
- SoapObjectReader.cs
- CodeExporter.cs
- MainMenu.cs
- HtmlFormAdapter.cs
- BoundPropertyEntry.cs
- HtmlPageAdapter.cs
- ExtensionSimplifierMarkupObject.cs
- ConstraintEnumerator.cs
- MsmqBindingBase.cs
- BigInt.cs
- StyleSheetRefUrlEditor.cs
- PerformanceCountersElement.cs
- BindingEntityInfo.cs
- ConnectionConsumerAttribute.cs
- SettingsContext.cs
- SByte.cs
- CheckBoxFlatAdapter.cs
- DescendentsWalker.cs
- StrongNamePublicKeyBlob.cs
- ResourceReader.cs
- ExpressionBuilder.cs
- MsmqReceiveHelper.cs
- XmlSerializableWriter.cs
- MdiWindowListItemConverter.cs
- XmlExpressionDumper.cs
- TimersDescriptionAttribute.cs
- SplitterCancelEvent.cs
- ProcessHostServerConfig.cs
- ProxyManager.cs
- PerformanceCounters.cs
- ChangePassword.cs
- LineVisual.cs
- XmlSerializer.cs
- RegexWorker.cs
- CodeObjectCreateExpression.cs
- GeometryCollection.cs
- KeyPullup.cs
- EnvironmentPermission.cs
- MultiBinding.cs
- ControlParameter.cs
- DocumentSchemaValidator.cs
- HideDisabledControlAdapter.cs
- Point4D.cs
- DataTableCollection.cs
- GatewayDefinition.cs
- ReplyAdapterChannelListener.cs
- TextDecoration.cs
- XmlElementAttribute.cs
- DateTimeStorage.cs
- CombinedGeometry.cs
- DaylightTime.cs
- PlainXmlSerializer.cs
- AssemblyResolver.cs
- StringConverter.cs
- CompModSwitches.cs
- AutomationIdentifier.cs
- DesignTimeTemplateParser.cs
- ItemCheckEvent.cs
- SelectionGlyph.cs
- QueryCoreOp.cs
- DoubleLinkList.cs
- HtmlElement.cs
- MissingMemberException.cs
- HtmlContainerControl.cs
- RuleProcessor.cs
- TextEditorLists.cs
- TreeNodeStyle.cs
- SocketException.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- PagesSection.cs
- ItemCheckedEvent.cs
- LogEntryHeaderDeserializer.cs
- IisTraceWebEventProvider.cs
- MethodCallConverter.cs
- TempEnvironment.cs
- UrlParameterWriter.cs
- EpmTargetTree.cs
- ObjectConverter.cs
- httpstaticobjectscollection.cs
- BufferModesCollection.cs
- PrintingPermission.cs
- BuilderInfo.cs
- TargetParameterCountException.cs
- CodeVariableDeclarationStatement.cs
- AxHost.cs
- OdbcTransaction.cs