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
- ColorTransformHelper.cs
- RegexBoyerMoore.cs
- MimeParameters.cs
- VisualStyleElement.cs
- ValidationSummary.cs
- TableLayoutPanelDesigner.cs
- JoinCqlBlock.cs
- AbstractExpressions.cs
- WindowsAuthenticationModule.cs
- RadioButtonAutomationPeer.cs
- CompositeClientFormatter.cs
- ThreadAbortException.cs
- Marshal.cs
- RepeaterItem.cs
- DocumentPage.cs
- EditorReuseAttribute.cs
- AddInController.cs
- DoubleCollection.cs
- StrokeNodeEnumerator.cs
- InfocardInteractiveChannelInitializer.cs
- InputScope.cs
- DataGridViewColumnCollection.cs
- ExtensionMethods.cs
- Page.cs
- OrderablePartitioner.cs
- LineGeometry.cs
- ToolStripProgressBar.cs
- Directory.cs
- ProviderSettingsCollection.cs
- InternalBase.cs
- ResourceReferenceExpressionConverter.cs
- NativeMethods.cs
- Error.cs
- MetadataArtifactLoaderFile.cs
- ArrayConverter.cs
- RequestNavigateEventArgs.cs
- DefinitionUpdate.cs
- HttpApplicationStateBase.cs
- StrokeNodeEnumerator.cs
- StylusEditingBehavior.cs
- Proxy.cs
- _UncName.cs
- Facet.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- Helper.cs
- PageHandlerFactory.cs
- WebPartDisplayMode.cs
- SecurityDescriptor.cs
- DataGridColumnHeaderAutomationPeer.cs
- XmlC14NWriter.cs
- ResolvedKeyFrameEntry.cs
- CodeSnippetTypeMember.cs
- DataGridItem.cs
- BitmapMetadata.cs
- XPathChildIterator.cs
- TextTreeRootNode.cs
- ModelItemCollection.cs
- MobileControl.cs
- ConfigurationProperty.cs
- ImagingCache.cs
- RIPEMD160.cs
- ObjectPersistData.cs
- XPathChildIterator.cs
- VisualProxy.cs
- WebPartEditorOkVerb.cs
- SqlUdtInfo.cs
- FieldDescriptor.cs
- SimpleRecyclingCache.cs
- EntitySetRetriever.cs
- DataObject.cs
- SqlDependencyListener.cs
- SiteMapProvider.cs
- Track.cs
- TextElement.cs
- ButtonField.cs
- PersistenceException.cs
- DetailsViewUpdatedEventArgs.cs
- BevelBitmapEffect.cs
- ProviderException.cs
- KeyValuePairs.cs
- RadioButtonFlatAdapter.cs
- DateTimePickerDesigner.cs
- NullReferenceException.cs
- PixelFormats.cs
- FileAuthorizationModule.cs
- StorageMappingItemLoader.cs
- DesignerHelpers.cs
- TcpHostedTransportConfiguration.cs
- NumberFormatInfo.cs
- XmlSerializerObjectSerializer.cs
- UserInitiatedRoutedEventPermission.cs
- SettingsPropertyNotFoundException.cs
- AddInPipelineAttributes.cs
- StringUtil.cs
- SecurityTokenTypes.cs
- odbcmetadatacollectionnames.cs
- TagPrefixCollection.cs
- EarlyBoundInfo.cs
- DataGridViewRowPrePaintEventArgs.cs
- ConfigXmlComment.cs