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
- ThreadPool.cs
- Menu.cs
- ChannelManager.cs
- SoapUnknownHeader.cs
- StaticFileHandler.cs
- StorageEndPropertyMapping.cs
- SolidColorBrush.cs
- PassportAuthenticationEventArgs.cs
- WebReferencesBuildProvider.cs
- MultipleViewProviderWrapper.cs
- SqlBulkCopyColumnMapping.cs
- WriteableBitmap.cs
- XmlSchemaSimpleContent.cs
- WindowsStartMenu.cs
- ExpressionNode.cs
- AttachInfo.cs
- ListItemConverter.cs
- XsdCachingReader.cs
- IisTraceWebEventProvider.cs
- Mutex.cs
- ClientCredentialsElement.cs
- BaseWebProxyFinder.cs
- ControlCodeDomSerializer.cs
- TextEditorTyping.cs
- BooleanSwitch.cs
- HitTestDrawingContextWalker.cs
- QuotedStringFormatReader.cs
- CommonGetThemePartSize.cs
- Condition.cs
- WebPartDeleteVerb.cs
- EdmFunction.cs
- DefaultSection.cs
- XmlSchemaParticle.cs
- TraceUtils.cs
- InputLanguageManager.cs
- InputMethodStateChangeEventArgs.cs
- ContentElement.cs
- TypeSystem.cs
- PersonalizationProviderHelper.cs
- DeviceContext.cs
- StringPropertyBuilder.cs
- VisualTreeUtils.cs
- Size3DConverter.cs
- TableLayoutSettings.cs
- LexicalChunk.cs
- ScaleTransform3D.cs
- DBPropSet.cs
- BinaryUtilClasses.cs
- Quaternion.cs
- Connector.xaml.cs
- ListenerChannelContext.cs
- LabelAutomationPeer.cs
- OutputScopeManager.cs
- DataGridViewControlCollection.cs
- ClientBuildManager.cs
- DataColumnPropertyDescriptor.cs
- StandardToolWindows.cs
- MemberNameValidator.cs
- PaginationProgressEventArgs.cs
- ToolStripComboBox.cs
- ProcessRequestAsyncResult.cs
- XmlTypeAttribute.cs
- MemberProjectionIndex.cs
- OutputCacheProfile.cs
- CodeConditionStatement.cs
- HashFinalRequest.cs
- SimpleWorkerRequest.cs
- SimpleHandlerBuildProvider.cs
- SqlMethodTransformer.cs
- TextDecorationCollection.cs
- ReadOnlyCollection.cs
- COM2EnumConverter.cs
- SBCSCodePageEncoding.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- SrgsSemanticInterpretationTag.cs
- URL.cs
- TemplateControlCodeDomTreeGenerator.cs
- NullRuntimeConfig.cs
- LayoutEditorPart.cs
- CultureInfoConverter.cs
- DiagnosticTraceSource.cs
- DocumentPaginator.cs
- DataControlFieldCell.cs
- CompoundFileStreamReference.cs
- VirtualDirectoryMappingCollection.cs
- TableLayoutCellPaintEventArgs.cs
- COM2TypeInfoProcessor.cs
- XPathSingletonIterator.cs
- UriExt.cs
- FindRequestContext.cs
- PatternMatcher.cs
- _TLSstream.cs
- DependencyObjectPropertyDescriptor.cs
- ElementsClipboardData.cs
- BitVector32.cs
- DynamicRouteExpression.cs
- ListViewTableCell.cs
- XhtmlConformanceSection.cs
- QuaternionAnimationBase.cs
- ZipIOExtraField.cs