Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Markup / ProvideValueServiceProvider.cs / 1 / ProvideValueServiceProvider.cs
/****************************************************************************\
*
* File: ProvideValueServiceProvider.cs
*
* ServiceProvider class that is passed into MarkupExtensions.ProvideValue method
* that understands the ParserContext.
*
* Copyright (C) 2006 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Windows;
using System.Windows.Media;
using System.Diagnostics;
namespace System.Windows.Markup
{
///
/// Base class for all Xaml markup extensions.
///
internal class ProvideValueServiceProvider : IServiceProvider, IProvideValueTarget, IBamlReader, IXamlTypeResolver, IUriContext, IFreezeFreezables
{
// Construction
internal ProvideValueServiceProvider(ParserContext context)
{
_context = context;
}
internal ProvideValueServiceProvider()
{
}
// Set the TargetObject/Property (for use by IProvideValueTarget).
internal void SetData(object targetObject, object targetProperty)
{
_targetObject = targetObject;
_targetProperty = targetProperty;
}
// Clear the TargetObject/Property (after a call to ProvideValue)
internal void ClearData()
{
_targetObject = _targetProperty = null;
}
// IXamlTypeResolver implementation
Type IXamlTypeResolver.Resolve(string qualifiedTypeName) // E.g. foo:Class
{
return _context.XamlTypeMapper.GetTypeFromBaseString(qualifiedTypeName, _context, true);
}
// IBamlReader implementation
BamlRecordReader IBamlReader.GetBamlReader()
{
return _context.BamlReader;
}
// IProvideValueTarget implementation
object IProvideValueTarget.TargetObject
{
get { return _targetObject; }
}
object IProvideValueTarget.TargetProperty
{
get { return _targetProperty; }
}
// IUriContext implementation
Uri IUriContext.BaseUri
{
get { return _context.BaseUri; }
set { throw new NotSupportedException(SR.Get(SRID.ParserProvideValueCantSetUri)); }
}
bool IFreezeFreezables.FreezeFreezables
{
get
{
return _context.FreezeFreezables;
}
}
bool IFreezeFreezables.TryFreeze(string value, Freezable freezable)
{
return _context.TryCacheFreezable(value, freezable);
}
Freezable IFreezeFreezables.TryGetFreezable(string value)
{
return _context.TryGetFreezable(value);
}
// IServiceProvider implementation (this is the way to get to the
// above interface implementations).
public object GetService(Type service)
{
// IProvideValueTarget is the only implementation that
// doesn't need the ParserContext
if( service == typeof(IProvideValueTarget))
{
return this as IProvideValueTarget;
}
if( _context != null )
{
if( service == typeof(IXamlTypeResolver))
{
return this as IXamlTypeResolver;
}
else if( service == typeof(IUriContext))
{
return this as IUriContext;
}
else if( service == typeof(IBamlReader))
{
return this as IBamlReader;
}
else if (service == typeof(IFreezeFreezables))
{
return this as IFreezeFreezables;
}
}
return null;
}
// Data
private ParserContext _context = null;
private object _targetObject = null;
private object _targetProperty = null;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: ProvideValueServiceProvider.cs
*
* ServiceProvider class that is passed into MarkupExtensions.ProvideValue method
* that understands the ParserContext.
*
* Copyright (C) 2006 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Windows;
using System.Windows.Media;
using System.Diagnostics;
namespace System.Windows.Markup
{
///
/// Base class for all Xaml markup extensions.
///
internal class ProvideValueServiceProvider : IServiceProvider, IProvideValueTarget, IBamlReader, IXamlTypeResolver, IUriContext, IFreezeFreezables
{
// Construction
internal ProvideValueServiceProvider(ParserContext context)
{
_context = context;
}
internal ProvideValueServiceProvider()
{
}
// Set the TargetObject/Property (for use by IProvideValueTarget).
internal void SetData(object targetObject, object targetProperty)
{
_targetObject = targetObject;
_targetProperty = targetProperty;
}
// Clear the TargetObject/Property (after a call to ProvideValue)
internal void ClearData()
{
_targetObject = _targetProperty = null;
}
// IXamlTypeResolver implementation
Type IXamlTypeResolver.Resolve(string qualifiedTypeName) // E.g. foo:Class
{
return _context.XamlTypeMapper.GetTypeFromBaseString(qualifiedTypeName, _context, true);
}
// IBamlReader implementation
BamlRecordReader IBamlReader.GetBamlReader()
{
return _context.BamlReader;
}
// IProvideValueTarget implementation
object IProvideValueTarget.TargetObject
{
get { return _targetObject; }
}
object IProvideValueTarget.TargetProperty
{
get { return _targetProperty; }
}
// IUriContext implementation
Uri IUriContext.BaseUri
{
get { return _context.BaseUri; }
set { throw new NotSupportedException(SR.Get(SRID.ParserProvideValueCantSetUri)); }
}
bool IFreezeFreezables.FreezeFreezables
{
get
{
return _context.FreezeFreezables;
}
}
bool IFreezeFreezables.TryFreeze(string value, Freezable freezable)
{
return _context.TryCacheFreezable(value, freezable);
}
Freezable IFreezeFreezables.TryGetFreezable(string value)
{
return _context.TryGetFreezable(value);
}
// IServiceProvider implementation (this is the way to get to the
// above interface implementations).
public object GetService(Type service)
{
// IProvideValueTarget is the only implementation that
// doesn't need the ParserContext
if( service == typeof(IProvideValueTarget))
{
return this as IProvideValueTarget;
}
if( _context != null )
{
if( service == typeof(IXamlTypeResolver))
{
return this as IXamlTypeResolver;
}
else if( service == typeof(IUriContext))
{
return this as IUriContext;
}
else if( service == typeof(IBamlReader))
{
return this as IBamlReader;
}
else if (service == typeof(IFreezeFreezables))
{
return this as IFreezeFreezables;
}
}
return null;
}
// Data
private ParserContext _context = null;
private object _targetObject = null;
private object _targetProperty = null;
}
}
// 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
- XmlProcessingInstruction.cs
- NativeBuffer.cs
- FontWeight.cs
- XmlConvert.cs
- CompilationPass2Task.cs
- MailMessage.cs
- UshortList2.cs
- RenderData.cs
- StorageMappingItemCollection.cs
- ScrollItemProviderWrapper.cs
- SetIterators.cs
- DrawingImage.cs
- DefaultWorkflowLoaderService.cs
- NumericExpr.cs
- XPathEmptyIterator.cs
- SqlAliaser.cs
- RelationshipWrapper.cs
- ListView.cs
- EventHandlerList.cs
- BindingSource.cs
- PolygonHotSpot.cs
- DataSourceXmlSerializationAttribute.cs
- streamingZipPartStream.cs
- COM2ComponentEditor.cs
- CollectionViewProxy.cs
- XmlTextReaderImplHelpers.cs
- FileDocument.cs
- UnsafePeerToPeerMethods.cs
- HttpCacheVary.cs
- SortDescription.cs
- DbParameterHelper.cs
- RegexCompiler.cs
- SecureStringHasher.cs
- dataobject.cs
- RelationshipWrapper.cs
- SqlBulkCopy.cs
- PixelShader.cs
- ColorBlend.cs
- RegistryPermission.cs
- JsonUriDataContract.cs
- PenThreadWorker.cs
- ArgumentOutOfRangeException.cs
- srgsitem.cs
- ISAPIWorkerRequest.cs
- ServerIdentity.cs
- ApplyImportsAction.cs
- DispatcherHooks.cs
- PropertyItemInternal.cs
- Enum.cs
- BidOverLoads.cs
- ProxyHelper.cs
- ParallelRangeManager.cs
- ProjectionPath.cs
- QueryCacheKey.cs
- datacache.cs
- InitializationEventAttribute.cs
- SafeLocalMemHandle.cs
- DataGridViewSortCompareEventArgs.cs
- ThreadPoolTaskScheduler.cs
- DrawingContextDrawingContextWalker.cs
- FindRequestContext.cs
- HandlerBase.cs
- HttpCacheParams.cs
- BitmapFrame.cs
- UnionExpr.cs
- DecimalAnimationUsingKeyFrames.cs
- Activity.cs
- UIntPtr.cs
- IgnoreSection.cs
- WebServiceReceive.cs
- DirectoryRootQuery.cs
- SaveWorkflowAsyncResult.cs
- XmlEnumAttribute.cs
- FontFamily.cs
- DateRangeEvent.cs
- SqlClientWrapperSmiStreamChars.cs
- DataBoundControlAdapter.cs
- ChangeNode.cs
- ResourceProviderFactory.cs
- TableItemPatternIdentifiers.cs
- ArrayList.cs
- WeakReferenceList.cs
- MetadataAssemblyHelper.cs
- HttpCacheVary.cs
- HwndProxyElementProvider.cs
- ServiceEndpointCollection.cs
- PropertyCondition.cs
- TrustManagerPromptUI.cs
- SQLSingleStorage.cs
- SendActivityDesigner.cs
- DataKeyCollection.cs
- IsolatedStorageFilePermission.cs
- AudienceUriMode.cs
- PanelStyle.cs
- WebPartsSection.cs
- StringFreezingAttribute.cs
- Brushes.cs
- DataPointer.cs
- WSFederationHttpBindingElement.cs
- RandomNumberGenerator.cs