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
- AlphaSortedEnumConverter.cs
- CurrencyManager.cs
- GrammarBuilderDictation.cs
- Accessible.cs
- TextFormatterHost.cs
- ConditionBrowserDialog.cs
- BinHexDecoder.cs
- DeclaredTypeElement.cs
- LinqTreeNodeEvaluator.cs
- WebControl.cs
- PenThread.cs
- SqlEnums.cs
- remotingproxy.cs
- SchemaConstraints.cs
- DropTarget.cs
- PropertyInformationCollection.cs
- CodeTryCatchFinallyStatement.cs
- AsyncOperationManager.cs
- CallContext.cs
- EntryWrittenEventArgs.cs
- LingerOption.cs
- ToolStripRendererSwitcher.cs
- DataGridDetailsPresenter.cs
- XmlReaderSettings.cs
- SafeNativeMethods.cs
- ActionItem.cs
- EventManager.cs
- InheritanceContextHelper.cs
- GridViewCellAutomationPeer.cs
- ReferencedCollectionType.cs
- ListViewGroupConverter.cs
- OleDbWrapper.cs
- PermissionToken.cs
- MeasurementDCInfo.cs
- VirtualDirectoryMapping.cs
- Logging.cs
- RequestCacheEntry.cs
- RealProxy.cs
- TouchFrameEventArgs.cs
- FormViewRow.cs
- ScriptDescriptor.cs
- ToolStripItemRenderEventArgs.cs
- Int16Converter.cs
- HierarchicalDataSourceControl.cs
- Debugger.cs
- BitmapEncoder.cs
- LingerOption.cs
- QueryPageSettingsEventArgs.cs
- IsolatedStorageFilePermission.cs
- Table.cs
- _FtpControlStream.cs
- ExtendedProtectionPolicy.cs
- Group.cs
- ProfessionalColorTable.cs
- ButtonChrome.cs
- TextParagraph.cs
- MouseButton.cs
- MenuItemCollection.cs
- ObjectItemConventionAssemblyLoader.cs
- EncoderParameters.cs
- AssociationSet.cs
- WindowsFormsSynchronizationContext.cs
- MarkupObject.cs
- DetailsViewCommandEventArgs.cs
- SizeKeyFrameCollection.cs
- Gdiplus.cs
- peernodestatemanager.cs
- DataSetMappper.cs
- PointAnimationClockResource.cs
- ExpressionUtilities.cs
- HtmlFormParameterReader.cs
- StructuredType.cs
- ContainerSelectorBehavior.cs
- LinqDataSourceSelectEventArgs.cs
- TraceListener.cs
- XPathItem.cs
- SystemKeyConverter.cs
- VisualCollection.cs
- DependencySource.cs
- UTF7Encoding.cs
- RegexMatchCollection.cs
- BridgeDataReader.cs
- BaseCodeDomTreeGenerator.cs
- FixedSOMTable.cs
- Rotation3DKeyFrameCollection.cs
- Attachment.cs
- ComponentCommands.cs
- SettingsPropertyCollection.cs
- InvalidateEvent.cs
- FixedTextContainer.cs
- FontSource.cs
- processwaithandle.cs
- CalendarDataBindingHandler.cs
- InputDevice.cs
- HttpProfileBase.cs
- InheritedPropertyChangedEventArgs.cs
- ItemCheckEvent.cs
- TaskForm.cs
- PeerContact.cs
- ConnectionManagementSection.cs