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
- SignatureDescription.cs
- SqlDataSourceParameterParser.cs
- XmlUtil.cs
- shaperfactory.cs
- ToolStripPanel.cs
- Registry.cs
- DecimalStorage.cs
- DiagnosticStrings.cs
- IndicCharClassifier.cs
- String.cs
- AuthStoreRoleProvider.cs
- PreProcessInputEventArgs.cs
- BigInt.cs
- RedirectionProxy.cs
- SmiContext.cs
- XmlDataSourceNodeDescriptor.cs
- ServiceProviders.cs
- UpdateManifestForBrowserApplication.cs
- SiteMapSection.cs
- ReferentialConstraintRoleElement.cs
- DataControlButton.cs
- CompilerTypeWithParams.cs
- EntityStoreSchemaGenerator.cs
- SessionStateItemCollection.cs
- ClientReliableChannelBinder.cs
- DbConnectionPoolGroup.cs
- MSAANativeProvider.cs
- OracleDateTime.cs
- SourceChangedEventArgs.cs
- TdsRecordBufferSetter.cs
- CfgRule.cs
- UTF7Encoding.cs
- safemediahandle.cs
- DiscoveryServiceExtension.cs
- HostedNamedPipeTransportManager.cs
- StyleBamlRecordReader.cs
- ColorMap.cs
- TraceSwitch.cs
- BuildResult.cs
- XamlTemplateSerializer.cs
- BitmapEffectGroup.cs
- DynamicValueConverter.cs
- SEHException.cs
- QfeChecker.cs
- CompiledIdentityConstraint.cs
- ComponentEditorPage.cs
- CompositeDispatchFormatter.cs
- QueryBranchOp.cs
- PermissionListSet.cs
- Timeline.cs
- XmlRootAttribute.cs
- QilChoice.cs
- ReadOnlyObservableCollection.cs
- CatalogZone.cs
- Point3DCollectionConverter.cs
- OdbcConnection.cs
- BitmapEffectGroup.cs
- ContractsBCL.cs
- MemberListBinding.cs
- ComPlusServiceLoader.cs
- PersonalizationProviderHelper.cs
- FormViewInsertEventArgs.cs
- Opcode.cs
- ConfigurationLocation.cs
- JavaScriptObjectDeserializer.cs
- EventLogEntryCollection.cs
- PageTheme.cs
- DBDataPermissionAttribute.cs
- TreeWalker.cs
- SearchForVirtualItemEventArgs.cs
- WindowsFormsSynchronizationContext.cs
- SessionIDManager.cs
- WSFederationHttpBindingElement.cs
- ErrorHandler.cs
- PluralizationServiceUtil.cs
- HttpRuntimeSection.cs
- FaultHandlingFilter.cs
- ExtendedPropertyCollection.cs
- X509Chain.cs
- SectionXmlInfo.cs
- WindowHideOrCloseTracker.cs
- PointHitTestParameters.cs
- RequestCache.cs
- DefaultBindingPropertyAttribute.cs
- ProfileGroupSettingsCollection.cs
- EventHandlerList.cs
- HijriCalendar.cs
- Vector3dCollection.cs
- Bold.cs
- XmlImplementation.cs
- SmiContext.cs
- DataColumnPropertyDescriptor.cs
- TemplateField.cs
- SplitterEvent.cs
- KernelTypeValidation.cs
- Light.cs
- SchemaNames.cs
- ValueQuery.cs
- ComponentResourceManager.cs
- AssemblyNameProxy.cs