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
- MouseEvent.cs
- StorageBasedPackageProperties.cs
- EnvironmentPermission.cs
- XmlDictionaryReader.cs
- InvalidProgramException.cs
- AnimationException.cs
- StateDesigner.CommentLayoutGlyph.cs
- WindowsContainer.cs
- State.cs
- DebugView.cs
- LeaseManager.cs
- PowerModeChangedEventArgs.cs
- TabPage.cs
- ThreadStartException.cs
- SystemIPv6InterfaceProperties.cs
- ToolStripRenderer.cs
- RandomNumberGenerator.cs
- __ComObject.cs
- PartialCachingControl.cs
- RequestQueue.cs
- SafeSystemMetrics.cs
- DataGridLinkButton.cs
- RecognitionEventArgs.cs
- GridPattern.cs
- DoWorkEventArgs.cs
- ToolStripCustomTypeDescriptor.cs
- PageCatalogPart.cs
- TextRangeSerialization.cs
- GuidConverter.cs
- FilteredXmlReader.cs
- BitStack.cs
- BackStopAuthenticationModule.cs
- CodeTypeDeclaration.cs
- UInt32Storage.cs
- ConfigPathUtility.cs
- RtfControls.cs
- DesignerVerb.cs
- CodeActivityMetadata.cs
- ValueSerializerAttribute.cs
- WSSecureConversationDec2005.cs
- CharacterBufferReference.cs
- MatrixAnimationUsingPath.cs
- NetMsmqSecurityMode.cs
- AnnotationResourceCollection.cs
- DataControlCommands.cs
- MailBnfHelper.cs
- XmlSerializerVersionAttribute.cs
- oledbconnectionstring.cs
- UniqueEventHelper.cs
- DataColumnChangeEvent.cs
- ExpressionBuilderContext.cs
- RecoverInstanceLocksCommand.cs
- Quad.cs
- FixUpCollection.cs
- Part.cs
- ZipFileInfo.cs
- AdapterUtil.cs
- Relationship.cs
- SymbolEqualComparer.cs
- GenerateScriptTypeAttribute.cs
- SecureStringHasher.cs
- TextEditorDragDrop.cs
- ArithmeticLiteral.cs
- FontStretches.cs
- _NestedMultipleAsyncResult.cs
- DataFormats.cs
- StickyNoteAnnotations.cs
- DataError.cs
- BinaryParser.cs
- Semaphore.cs
- CroppedBitmap.cs
- GridViewColumnHeader.cs
- BinaryWriter.cs
- BufferBuilder.cs
- SqlCrossApplyToCrossJoin.cs
- DuplexClientBase.cs
- X500Name.cs
- MarginsConverter.cs
- MasterPageCodeDomTreeGenerator.cs
- SqlTransaction.cs
- WindowsGraphics2.cs
- ScrollableControl.cs
- FilterEventArgs.cs
- wgx_sdk_version.cs
- UserControlParser.cs
- SynchronizationLockException.cs
- AutomationPatternInfo.cs
- XPathNodeInfoAtom.cs
- DataRelationPropertyDescriptor.cs
- TimeZone.cs
- DetailsViewAutoFormat.cs
- SQLMoneyStorage.cs
- PassportAuthenticationModule.cs
- PageWrapper.cs
- InstanceNameConverter.cs
- InstalledVoice.cs
- ColumnReorderedEventArgs.cs
- ReachSerializerAsync.cs
- DBNull.cs
- SignedXml.cs