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
- PtsCache.cs
- ToolStripSeparator.cs
- XamlTreeBuilderBamlRecordWriter.cs
- MediaScriptCommandRoutedEventArgs.cs
- WindowsToolbar.cs
- BinaryParser.cs
- GB18030Encoding.cs
- EditCommandColumn.cs
- MaskedTextBox.cs
- SecurityDescriptor.cs
- ApplicationFileParser.cs
- GridViewItemAutomationPeer.cs
- ProfileManager.cs
- counter.cs
- GPRECTF.cs
- IPAddressCollection.cs
- SafeHandle.cs
- GorillaCodec.cs
- ImmutableCollection.cs
- HyperLinkField.cs
- HotSpotCollection.cs
- GroupItem.cs
- PresentationTraceSources.cs
- ObjectViewQueryResultData.cs
- SkinBuilder.cs
- MetadataItem.cs
- Pair.cs
- ClientSponsor.cs
- ToolStripItemCollection.cs
- QilParameter.cs
- ConfigXmlAttribute.cs
- Pointer.cs
- _AutoWebProxyScriptWrapper.cs
- BoolLiteral.cs
- FixedTextView.cs
- ServiceNameElement.cs
- EventWaitHandle.cs
- FrameworkContentElement.cs
- UInt16Storage.cs
- RealizationDrawingContextWalker.cs
- CollectionChangedEventManager.cs
- Assembly.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- HttpHandlerActionCollection.cs
- RadioButtonPopupAdapter.cs
- InvalidEnumArgumentException.cs
- MdiWindowListStrip.cs
- Serializer.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DefaultAssemblyResolver.cs
- LineInfo.cs
- Geometry.cs
- TdsValueSetter.cs
- PackWebRequest.cs
- Win32Native.cs
- MatrixStack.cs
- AsynchronousChannel.cs
- PrimitiveDataContract.cs
- Setter.cs
- DelegateBodyWriter.cs
- ProtocolsSection.cs
- ColumnWidthChangedEvent.cs
- PreProcessInputEventArgs.cs
- InputBinder.cs
- MobileControlsSectionHandler.cs
- followingquery.cs
- StreamInfo.cs
- ScriptingRoleServiceSection.cs
- DataPagerFieldCommandEventArgs.cs
- IncrementalReadDecoders.cs
- RadialGradientBrush.cs
- ListViewItemEventArgs.cs
- Pointer.cs
- ControlValuePropertyAttribute.cs
- DataContext.cs
- XmlILConstructAnalyzer.cs
- BamlTreeMap.cs
- AxWrapperGen.cs
- ParagraphResult.cs
- DefaultEvaluationContext.cs
- COM2PictureConverter.cs
- WindowsScroll.cs
- StartUpEventArgs.cs
- TextServicesCompartment.cs
- MailSettingsSection.cs
- HostedHttpRequestAsyncResult.cs
- ButtonStandardAdapter.cs
- Property.cs
- FormViewPagerRow.cs
- CachingHintValidation.cs
- DataServiceRequestException.cs
- WebHttpBehavior.cs
- WebPartVerbCollection.cs
- DataGridViewColumnStateChangedEventArgs.cs
- PassportAuthenticationModule.cs
- WebPartEditVerb.cs
- SetStoryboardSpeedRatio.cs
- CompilerGlobalScopeAttribute.cs
- ProviderUtil.cs
- SimpleTextLine.cs