Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / ProvideValueServiceProvider.cs / 1305600 / 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, 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); } // 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(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, 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); } // 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(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
- SymmetricAlgorithm.cs
- Cursor.cs
- SessionStateUtil.cs
- DataListItemCollection.cs
- DBDataPermission.cs
- Util.cs
- GridViewEditEventArgs.cs
- FloaterParagraph.cs
- GeometryModel3D.cs
- RemotingSurrogateSelector.cs
- ResourceFallbackManager.cs
- TreeView.cs
- DockAndAnchorLayout.cs
- ButtonBaseAutomationPeer.cs
- HttpProfileGroupBase.cs
- FactoryMaker.cs
- COM2PropertyPageUITypeConverter.cs
- ReflectionPermission.cs
- BulletedList.cs
- Scalars.cs
- LoadedOrUnloadedOperation.cs
- Int32.cs
- ListDictionaryInternal.cs
- TraceXPathNavigator.cs
- ProfileServiceManager.cs
- DataServiceContext.cs
- ExpandableObjectConverter.cs
- StylusPointProperty.cs
- ShowExpandedMultiValueConverter.cs
- HttpModuleCollection.cs
- Models.cs
- PageTrueTypeFont.cs
- PersonalizationStateInfoCollection.cs
- userdatakeys.cs
- DataGridViewComponentPropertyGridSite.cs
- ThreadStateException.cs
- TextBreakpoint.cs
- PageClientProxyGenerator.cs
- TriState.cs
- SystemIcons.cs
- DispatcherTimer.cs
- MappedMetaModel.cs
- RequestFactory.cs
- CompareValidator.cs
- ContentElement.cs
- ManipulationLogic.cs
- ExclusiveTcpListener.cs
- SafeProcessHandle.cs
- AuthenticationConfig.cs
- CheckBox.cs
- ArithmeticLiteral.cs
- Margins.cs
- datacache.cs
- StyleSelector.cs
- ToolStripSeparator.cs
- DataServiceQueryProvider.cs
- AnnotationComponentChooser.cs
- WebExceptionStatus.cs
- NGCSerializer.cs
- UriParserTemplates.cs
- OperatingSystem.cs
- XmlExtensionFunction.cs
- MetadataCollection.cs
- ConnectionManager.cs
- MasterPage.cs
- CultureTable.cs
- IisHelper.cs
- PhotoPrintingIntent.cs
- PropertyItem.cs
- KeyValuePairs.cs
- ServerValidateEventArgs.cs
- BuildProviderCollection.cs
- FrameSecurityDescriptor.cs
- SequenceDesigner.cs
- SmiXetterAccessMap.cs
- QilParameter.cs
- ValidationError.cs
- Base64Encoder.cs
- PrivateFontCollection.cs
- ListViewGroupConverter.cs
- MetabaseSettingsIis7.cs
- BuildProvidersCompiler.cs
- BrowserCapabilitiesCompiler.cs
- Filter.cs
- Rfc2898DeriveBytes.cs
- ChangeToolStripParentVerb.cs
- RelationshipEndCollection.cs
- PtsContext.cs
- ClosableStream.cs
- RouteCollection.cs
- InheritanceAttribute.cs
- CodeLinePragma.cs
- AuthenticationService.cs
- ApplicationServiceManager.cs
- HostProtectionException.cs
- RequestStatusBarUpdateEventArgs.cs
- RelationshipNavigation.cs
- DBPropSet.cs
- RightsManagementPermission.cs
- ProcessManager.cs