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
- JoinTreeSlot.cs
- SqlCommandAsyncResult.cs
- GatewayIPAddressInformationCollection.cs
- Cell.cs
- WindowsSysHeader.cs
- CqlLexerHelpers.cs
- ObjectQuery_EntitySqlExtensions.cs
- SqlBulkCopyColumnMappingCollection.cs
- AssemblyAttributes.cs
- Clipboard.cs
- FormsAuthenticationUserCollection.cs
- CultureTable.cs
- CollectionConverter.cs
- DefinitionBase.cs
- PrintPreviewDialog.cs
- ClosableStream.cs
- ResetableIterator.cs
- PagerSettings.cs
- NegatedCellConstant.cs
- GenericWebPart.cs
- SourceItem.cs
- HttpValueCollection.cs
- UnsafeNativeMethods.cs
- ReadOnlyActivityGlyph.cs
- PreservationFileReader.cs
- TemplateControlCodeDomTreeGenerator.cs
- KeyInterop.cs
- EntitySqlQueryBuilder.cs
- SrgsToken.cs
- ShortcutKeysEditor.cs
- FileUtil.cs
- FormClosedEvent.cs
- ConnectorDragDropGlyph.cs
- DataGridViewRowConverter.cs
- WebServiceEnumData.cs
- HttpApplication.cs
- SecurityIdentifierElementCollection.cs
- PlatformCulture.cs
- ProfileEventArgs.cs
- sqlcontext.cs
- SubMenuStyle.cs
- Pair.cs
- OrthographicCamera.cs
- CommandConverter.cs
- Line.cs
- ManagementPath.cs
- PhysicalOps.cs
- GridItemProviderWrapper.cs
- SecurityUtils.cs
- PointConverter.cs
- Char.cs
- XmlWrappingWriter.cs
- DataGridViewIntLinkedList.cs
- IsolatedStorageFilePermission.cs
- RijndaelManaged.cs
- WebServiceErrorEvent.cs
- FocusWithinProperty.cs
- PageBreakRecord.cs
- CollectionsUtil.cs
- ByteConverter.cs
- Group.cs
- HitTestWithPointDrawingContextWalker.cs
- DBProviderConfigurationHandler.cs
- SqlCrossApplyToCrossJoin.cs
- WsatAdminException.cs
- PeerCollaboration.cs
- PropertyChangedEventArgs.cs
- UnitySerializationHolder.cs
- SelectionRange.cs
- BuildProvider.cs
- ConfigurationPermission.cs
- ShapeTypeface.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- BrowserCapabilitiesCompiler.cs
- DbConnectionPoolIdentity.cs
- ServiceModelConfiguration.cs
- CriticalFileToken.cs
- CustomAttributeFormatException.cs
- Transaction.cs
- FrameworkElementFactoryMarkupObject.cs
- AsymmetricAlgorithm.cs
- TextContainerHelper.cs
- SystemColorTracker.cs
- DiagnosticEventProvider.cs
- TraceLog.cs
- DispatchOperation.cs
- Screen.cs
- DayRenderEvent.cs
- GridViewUpdatedEventArgs.cs
- XmlJsonWriter.cs
- DataDocumentXPathNavigator.cs
- GeneralTransform3DTo2DTo3D.cs
- MimeTypeAttribute.cs
- TypeNameConverter.cs
- SocketPermission.cs
- DataServiceHost.cs
- SubpageParagraph.cs
- MethodToken.cs
- BoolExpression.cs
- Screen.cs