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
- PageSettings.cs
- HttpCapabilitiesEvaluator.cs
- XmlNodeWriter.cs
- columnmapkeybuilder.cs
- RadioButtonPopupAdapter.cs
- HttpProfileBase.cs
- ParameterDataSourceExpression.cs
- SafeIUnknown.cs
- URL.cs
- MsmqHostedTransportConfiguration.cs
- CollaborationHelperFunctions.cs
- ResourceReferenceKeyNotFoundException.cs
- ShadowGlyph.cs
- FileVersionInfo.cs
- XDRSchema.cs
- ConfigurationPropertyCollection.cs
- SqlCacheDependencySection.cs
- CodeParameterDeclarationExpression.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- FacetDescription.cs
- EntityContainerAssociationSetEnd.cs
- StopStoryboard.cs
- EntityReference.cs
- DataGridTablesFactory.cs
- ColorBlend.cs
- _SingleItemRequestCache.cs
- SerializableAttribute.cs
- HttpAsyncResult.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- InputGestureCollection.cs
- SamlAuthenticationStatement.cs
- AttachedPropertyMethodSelector.cs
- XmlJsonWriter.cs
- TextBlockAutomationPeer.cs
- Rect3DConverter.cs
- WebDescriptionAttribute.cs
- SerializationStore.cs
- TextTreeTextElementNode.cs
- AutoGeneratedFieldProperties.cs
- DesignSurface.cs
- NamespaceDisplay.xaml.cs
- PersonalizationEntry.cs
- XmlSchemaSimpleTypeList.cs
- NamespaceCollection.cs
- FormsAuthenticationTicket.cs
- HwndSource.cs
- WebFormDesignerActionService.cs
- DbRetry.cs
- TypeContext.cs
- ConfigurationManagerHelper.cs
- HandleRef.cs
- XmlAnyElementAttributes.cs
- remotingproxy.cs
- SafeCryptHandles.cs
- EncoderBestFitFallback.cs
- TrackingMemoryStreamFactory.cs
- LineServices.cs
- ControlAdapter.cs
- HttpErrorTraceRecord.cs
- ChannelParameterCollection.cs
- MultiSelector.cs
- OdbcConnectionStringbuilder.cs
- ToolStripItemRenderEventArgs.cs
- SmiGettersStream.cs
- XmlStreamStore.cs
- SiteMapPath.cs
- CreateUserWizard.cs
- ConstructorBuilder.cs
- ExpressionVisitor.cs
- NumberFunctions.cs
- DigestTraceRecordHelper.cs
- DataGridHelper.cs
- WindowsSysHeader.cs
- MessageVersionConverter.cs
- EntityContainerRelationshipSetEnd.cs
- TrackingRecord.cs
- CompilerErrorCollection.cs
- Geometry3D.cs
- MultilineStringEditor.cs
- ProcessThreadDesigner.cs
- InternalMappingException.cs
- HtmlFormWrapper.cs
- GrabHandleGlyph.cs
- InfoCardArgumentException.cs
- RenderOptions.cs
- ParameterBinding.cs
- QueueProcessor.cs
- SecurityKeyIdentifier.cs
- LineProperties.cs
- DbProviderFactory.cs
- TimelineCollection.cs
- XmlAttributeCollection.cs
- StylusPointProperties.cs
- XPathNavigatorReader.cs
- HttpHandlerAction.cs
- Helper.cs
- NullEntityWrapper.cs
- VisualBasicDesignerHelper.cs
- CounterNameConverter.cs
- CheckBoxField.cs