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
- ManipulationDevice.cs
- PassportAuthenticationEventArgs.cs
- ObjectIDGenerator.cs
- SystemWebExtensionsSectionGroup.cs
- VariableQuery.cs
- IDQuery.cs
- DbDataAdapter.cs
- MimeTypeMapper.cs
- InkCanvasSelection.cs
- SerializationStore.cs
- DropDownButton.cs
- DataGridViewCellEventArgs.cs
- AsmxEndpointPickerExtension.cs
- ApplySecurityAndSendAsyncResult.cs
- BaseParser.cs
- TextServicesContext.cs
- TextTrailingWordEllipsis.cs
- BitmapPalette.cs
- ImageSourceValueSerializer.cs
- PerfCounters.cs
- LockRenewalTask.cs
- CalendarAutomationPeer.cs
- UniqueEventHelper.cs
- ProfileModule.cs
- SystemInformation.cs
- DelegatedStream.cs
- MiniModule.cs
- StorageComplexTypeMapping.cs
- PrefixQName.cs
- IERequestCache.cs
- MetabaseServerConfig.cs
- MessageSmuggler.cs
- XmlStreamStore.cs
- EastAsianLunisolarCalendar.cs
- TypeRestriction.cs
- SpanIndex.cs
- FontNameConverter.cs
- AttributeQuery.cs
- AssignDesigner.xaml.cs
- DataTable.cs
- SecureConversationServiceElement.cs
- UnsafeNativeMethods.cs
- DictionaryBase.cs
- ControlCachePolicy.cs
- ScrollEvent.cs
- InputQueueChannel.cs
- DataGridViewColumnEventArgs.cs
- XPathAncestorQuery.cs
- Baml2006ReaderSettings.cs
- OpacityConverter.cs
- HtmlInputButton.cs
- PropertyCondition.cs
- MaterializeFromAtom.cs
- NonVisualControlAttribute.cs
- UInt64Converter.cs
- TaskHelper.cs
- StructuredTypeEmitter.cs
- RuleInfoComparer.cs
- ClearCollection.cs
- MemoryFailPoint.cs
- ConsoleCancelEventArgs.cs
- TagPrefixAttribute.cs
- TextureBrush.cs
- UnsafeNativeMethods.cs
- MailMessageEventArgs.cs
- PassportIdentity.cs
- ComplexTypeEmitter.cs
- DataRelationPropertyDescriptor.cs
- Attribute.cs
- DataSourceHelper.cs
- complextypematerializer.cs
- StringHandle.cs
- ProcessProtocolHandler.cs
- DataException.cs
- MethodSet.cs
- WebPartCollection.cs
- NativeRightsManagementAPIsStructures.cs
- EventMap.cs
- TemplateManager.cs
- RequestCacheManager.cs
- VectorAnimationBase.cs
- XmlSchemaDatatype.cs
- XmlLoader.cs
- CalendarTable.cs
- Scalars.cs
- SrgsText.cs
- Camera.cs
- HttpServerProtocol.cs
- SafeMILHandle.cs
- SecurityHelper.cs
- WebPartConnection.cs
- FrameworkRichTextComposition.cs
- XmlAttributeProperties.cs
- ButtonAutomationPeer.cs
- HttpRequestTraceRecord.cs
- SiteMembershipCondition.cs
- SqlVisitor.cs
- _KerberosClient.cs
- DataRow.cs
- ResourceDefaultValueAttribute.cs