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 / 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
- ComponentCodeDomSerializer.cs
- StatusBar.cs
- Registry.cs
- XmlWriter.cs
- ErrorsHelper.cs
- RuntimeHandles.cs
- TriggerActionCollection.cs
- GridViewRowPresenterBase.cs
- Evaluator.cs
- GridViewRowPresenterBase.cs
- GlyphShapingProperties.cs
- SmiRecordBuffer.cs
- HierarchicalDataSourceControl.cs
- IdentitySection.cs
- StylusPointPropertyId.cs
- SettingsAttributes.cs
- Transform3DGroup.cs
- XmlEncoding.cs
- ChangeNode.cs
- GeometryModel3D.cs
- DrawingAttributes.cs
- LineProperties.cs
- UnsafeNativeMethods.cs
- ConnectionsZoneAutoFormat.cs
- QuaternionKeyFrameCollection.cs
- GB18030Encoding.cs
- DependencyPropertyKey.cs
- FastPropertyAccessor.cs
- TableHeaderCell.cs
- PageWrapper.cs
- ProcessHost.cs
- FileVersion.cs
- StateRuntime.cs
- InternalMappingException.cs
- TabControlAutomationPeer.cs
- ButtonChrome.cs
- ButtonChrome.cs
- HttpMethodConstraint.cs
- WorkflowServiceHostFactory.cs
- XmlTextAttribute.cs
- Span.cs
- BulletDecorator.cs
- Transform3DGroup.cs
- SerialPinChanges.cs
- ContextMarshalException.cs
- ViewCellSlot.cs
- WebPartDeleteVerb.cs
- IgnoreDeviceFilterElementCollection.cs
- AuthenticationSection.cs
- SplitterDesigner.cs
- InputGestureCollection.cs
- SoapUnknownHeader.cs
- StorageEndPropertyMapping.cs
- SettingsPropertyNotFoundException.cs
- ProtectedConfiguration.cs
- NameHandler.cs
- ObjRef.cs
- Source.cs
- AutomationFocusChangedEventArgs.cs
- SchemaImporterExtension.cs
- ToolbarAUtomationPeer.cs
- StretchValidation.cs
- ProbeDuplex11AsyncResult.cs
- ListViewItem.cs
- TimeEnumHelper.cs
- SqlUserDefinedAggregateAttribute.cs
- TypePropertyEditor.cs
- SmtpClient.cs
- FastPropertyAccessor.cs
- ZipIOModeEnforcingStream.cs
- DependencyObjectPropertyDescriptor.cs
- Page.cs
- wgx_render.cs
- DocumentGridContextMenu.cs
- PointLight.cs
- X509SecurityTokenAuthenticator.cs
- ConfigUtil.cs
- MethodExpr.cs
- GB18030Encoding.cs
- ResourceReferenceExpressionConverter.cs
- diagnosticsswitches.cs
- SpeakProgressEventArgs.cs
- NamedPipeConnectionPoolSettings.cs
- RadioButtonAutomationPeer.cs
- SqlCacheDependencySection.cs
- SqlParameter.cs
- KeyInterop.cs
- MetafileHeaderEmf.cs
- BamlCollectionHolder.cs
- EditorAttribute.cs
- BitmapEffectGeneralTransform.cs
- DragAssistanceManager.cs
- DefaultValueAttribute.cs
- LeafCellTreeNode.cs
- CultureTable.cs
- PropertyCondition.cs
- SlotInfo.cs
- ApplicationCommands.cs
- DataObjectFieldAttribute.cs
- Rotation3D.cs