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
- QfeChecker.cs
- HwndKeyboardInputProvider.cs
- CircleEase.cs
- MonitoringDescriptionAttribute.cs
- GridViewDeletedEventArgs.cs
- DataDesignUtil.cs
- SizeConverter.cs
- TagPrefixInfo.cs
- Range.cs
- SelectionWordBreaker.cs
- ProfilePropertyMetadata.cs
- XmlWrappingReader.cs
- Vector3dCollection.cs
- UIElementCollection.cs
- AutoScrollExpandMessageFilter.cs
- TraceHandler.cs
- DataGridViewRowCollection.cs
- SourceFilter.cs
- DataGridViewSortCompareEventArgs.cs
- MasterPageCodeDomTreeGenerator.cs
- WebUtil.cs
- WebReferencesBuildProvider.cs
- SocketInformation.cs
- StatementContext.cs
- LeftCellWrapper.cs
- Item.cs
- Utils.cs
- MessageRpc.cs
- FontNameConverter.cs
- MimeWriter.cs
- CommandCollectionEditor.cs
- DefaultPropertyAttribute.cs
- RemoteWebConfigurationHost.cs
- WebException.cs
- BasicViewGenerator.cs
- IFlowDocumentViewer.cs
- ComplexObject.cs
- DataContractSet.cs
- ParameterModifier.cs
- SmtpTransport.cs
- ResXBuildProvider.cs
- ReachPrintTicketSerializer.cs
- SimpleFieldTemplateFactory.cs
- StorageEntityTypeMapping.cs
- MediaPlayerState.cs
- PartialCachingControl.cs
- FastPropertyAccessor.cs
- Rfc2898DeriveBytes.cs
- LassoSelectionBehavior.cs
- SqlBuffer.cs
- SortExpressionBuilder.cs
- DoWorkEventArgs.cs
- EditingMode.cs
- TokenBasedSet.cs
- TemplateBamlTreeBuilder.cs
- CalendarAutoFormatDialog.cs
- IIS7UserPrincipal.cs
- XXXInfos.cs
- IdentitySection.cs
- EntityContainer.cs
- OleDbReferenceCollection.cs
- DateTimeOffsetConverter.cs
- ReplacementText.cs
- DiagnosticsConfigurationHandler.cs
- Collection.cs
- TabItemAutomationPeer.cs
- Trustee.cs
- EncodingDataItem.cs
- BoolExpression.cs
- precedingsibling.cs
- ParentQuery.cs
- BitVector32.cs
- ElementNotEnabledException.cs
- DbBuffer.cs
- WsiProfilesElement.cs
- BordersPage.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- IProvider.cs
- StaticContext.cs
- WebDescriptionAttribute.cs
- TableParaClient.cs
- InvalidPrinterException.cs
- DSACryptoServiceProvider.cs
- Int32RectConverter.cs
- httpstaticobjectscollection.cs
- CatalogZone.cs
- UrlAuthFailureHandler.cs
- SoapMessage.cs
- CreateUserWizard.cs
- FixedFindEngine.cs
- ManualWorkflowSchedulerService.cs
- BindingManagerDataErrorEventArgs.cs
- DesignerActionTextItem.cs
- WaitForChangedResult.cs
- InProcStateClientManager.cs
- ParserContext.cs
- DataBoundLiteralControl.cs
- BadImageFormatException.cs
- Barrier.cs
- FontStyleConverter.cs