Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ArgumentNullException.cs
- ConfigXmlDocument.cs
- TextEditorContextMenu.cs
- FormsAuthenticationUser.cs
- LinearGradientBrush.cs
- WinFormsSpinner.cs
- UriExt.cs
- Helpers.cs
- Translator.cs
- SafeMILHandle.cs
- TypefaceMap.cs
- EditingMode.cs
- ObjectListFieldCollection.cs
- IntSecurity.cs
- ReachIDocumentPaginatorSerializer.cs
- EventListener.cs
- TdsParameterSetter.cs
- PointHitTestResult.cs
- LinqDataSourceContextEventArgs.cs
- CultureInfoConverter.cs
- DbgUtil.cs
- LockedBorderGlyph.cs
- RegexWorker.cs
- ScriptingJsonSerializationSection.cs
- GlyphRunDrawing.cs
- GrammarBuilderDictation.cs
- AssemblySettingAttributes.cs
- ClientOptions.cs
- BmpBitmapDecoder.cs
- MostlySingletonList.cs
- UriTemplateTrieNode.cs
- BooleanExpr.cs
- DataFormat.cs
- UInt16Storage.cs
- BamlResourceSerializer.cs
- DateTimeUtil.cs
- EmptyEnumerable.cs
- AuthorizationRuleCollection.cs
- MatrixIndependentAnimationStorage.cs
- PropertyChangedEventManager.cs
- DesignerProperties.cs
- ShutDownListener.cs
- ColorEditor.cs
- CodeDomSerializer.cs
- ContextMarshalException.cs
- HttpRuntime.cs
- GenericIdentity.cs
- ActivationArguments.cs
- ArrayWithOffset.cs
- WindowsAuthenticationModule.cs
- AffineTransform3D.cs
- WebContext.cs
- KeyedQueue.cs
- ZoneMembershipCondition.cs
- HttpCookie.cs
- WindowsTokenRoleProvider.cs
- Types.cs
- SelectionWordBreaker.cs
- NotSupportedException.cs
- BuildManagerHost.cs
- DateTimeValueSerializer.cs
- ColumnCollection.cs
- CLRBindingWorker.cs
- RootProjectionNode.cs
- TextEffectCollection.cs
- EndpointDiscoveryMetadata.cs
- MessageSecurityOverMsmq.cs
- UInt16Storage.cs
- BaseParagraph.cs
- TransformerTypeCollection.cs
- CodeObject.cs
- DataRowView.cs
- ToolBar.cs
- Line.cs
- DefaultDialogButtons.cs
- OleDbDataReader.cs
- TextEffectResolver.cs
- PostBackOptions.cs
- Operators.cs
- Message.cs
- Freezable.cs
- AccessibilityApplicationManager.cs
- InternalEnumValidatorAttribute.cs
- PopupRootAutomationPeer.cs
- AdobeCFFWrapper.cs
- DataGridCellEditEndingEventArgs.cs
- Util.cs
- TextFormatterImp.cs
- XPathNavigator.cs
- DesignerPerfEventProvider.cs
- ScriptReferenceBase.cs
- RootBrowserWindow.cs
- Attachment.cs
- NamespaceInfo.cs
- SerializationInfo.cs
- CellLabel.cs
- BlobPersonalizationState.cs
- TableLayoutColumnStyleCollection.cs
- KeyValuePairs.cs
- AndMessageFilterTable.cs