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
- HtmlControlPersistable.cs
- EFDataModelProvider.cs
- EndpointBehaviorElementCollection.cs
- XmlMapping.cs
- DocumentReference.cs
- Identity.cs
- BCLDebug.cs
- MsmqElementBase.cs
- SafeLocalMemHandle.cs
- XmlNamespaceDeclarationsAttribute.cs
- sqlnorm.cs
- ConfigXmlReader.cs
- ViewCellRelation.cs
- ColorAnimationUsingKeyFrames.cs
- DataGridViewColumnDesigner.cs
- GraphicsState.cs
- DBCommandBuilder.cs
- SqlCommandSet.cs
- MappingException.cs
- ExpressionEditorAttribute.cs
- XmlSchemaAny.cs
- GacUtil.cs
- CustomWebEventKey.cs
- UntypedNullExpression.cs
- ValidationService.cs
- ExceptionHelpers.cs
- BrowserTree.cs
- ObjectItemCachedAssemblyLoader.cs
- SessionParameter.cs
- DataGridTextBoxColumn.cs
- ToolboxComponentsCreatingEventArgs.cs
- Calendar.cs
- ListBoxItemAutomationPeer.cs
- StreamingContext.cs
- OdbcInfoMessageEvent.cs
- InterleavedZipPartStream.cs
- SizeAnimation.cs
- WebEvents.cs
- CodeAttributeDeclarationCollection.cs
- SerializationInfo.cs
- PlaceHolder.cs
- GrammarBuilderBase.cs
- GeneratedCodeAttribute.cs
- SqlGatherProducedAliases.cs
- BaseParser.cs
- LambdaCompiler.Address.cs
- ScrollProviderWrapper.cs
- SmiXetterAccessMap.cs
- SiteMapProvider.cs
- WindowsListViewSubItem.cs
- XmlSchemaSimpleContentRestriction.cs
- ContainerParagraph.cs
- DocumentPageTextView.cs
- EraserBehavior.cs
- CodeThrowExceptionStatement.cs
- SymbolPair.cs
- DoubleCollectionConverter.cs
- HijriCalendar.cs
- CmsUtils.cs
- XamlSerializer.cs
- Converter.cs
- UnsafeNetInfoNativeMethods.cs
- TypeContext.cs
- Events.cs
- SmiRequestExecutor.cs
- MainMenu.cs
- DeclarativeCatalogPart.cs
- DbDataReader.cs
- AddInController.cs
- StandardOleMarshalObject.cs
- TimeSpanSecondsConverter.cs
- XPathNodeInfoAtom.cs
- XPathConvert.cs
- SQLDoubleStorage.cs
- PaintValueEventArgs.cs
- KeyedCollection.cs
- DesignerActionItem.cs
- Solver.cs
- ArrangedElement.cs
- DbMetaDataCollectionNames.cs
- GenericUriParser.cs
- AssertUtility.cs
- FreeFormDesigner.cs
- BuilderInfo.cs
- EntityClassGenerator.cs
- XmlSchemaDatatype.cs
- ContentPosition.cs
- TextTreeNode.cs
- FactoryGenerator.cs
- ParenthesizePropertyNameAttribute.cs
- BooleanKeyFrameCollection.cs
- CreateUserWizardAutoFormat.cs
- BinaryConverter.cs
- EventLogStatus.cs
- HostingPreferredMapPath.cs
- PluralizationServiceUtil.cs
- SafeSystemMetrics.cs
- FlatButtonAppearance.cs
- BinaryParser.cs
- PageSettings.cs