Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / DeferrableContentConverter.cs / 1305600 / DeferrableContentConverter.cs
using System; using System.IO; using System.Net; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Diagnostics; using System.ComponentModel; using System.Windows.Threading; using System.Windows.Media; using System.IO.Packaging; using MS.Internal.IO.Packaging; // for PackageCacheEntry using System.Globalization; using System.Windows.Navigation; using MS.Internal; using MS.Internal.Utility; using MS.Internal.AppModel; using MS.Utility; using System.Xaml; using System.Windows.Baml2006; using System.Windows.Markup; namespace System.Windows { public class DeferrableContentConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (typeof(Stream).IsAssignableFrom(sourceType) || sourceType == typeof(byte[])) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value != null) { if (context == null) { throw new ArgumentNullException("context"); } XamlSchemaContext xamlSchemaContext = RequireService(context).SchemaContext; Baml2006SchemaContext schemaContext = xamlSchemaContext as Baml2006SchemaContext; if (schemaContext == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBamlSchemaContext)); } IXamlObjectWriterFactory objectWriterFactory = RequireService (context); IProvideValueTarget ipvt = RequireService (context); IRootObjectProvider rootObjectProvider = RequireService (context); ResourceDictionary dictionary = ipvt.TargetObject as ResourceDictionary; if (dictionary == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedResourceDictionaryTarget)); } Stream stream = value as Stream; if (stream == null) { byte[] bytes = value as byte[]; if (bytes != null) { stream = new MemoryStream(bytes); } } if (stream == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBinaryContent)); } // DeferrableContent deferrableContext = new DeferrableContent(stream, schemaContext, objectWriterFactory, context, rootObjectProvider.RootObject); return deferrableContext; } return base.ConvertFrom(context, culture, value); } private static T RequireService (IServiceProvider provider) where T : class { T result = provider.GetService(typeof(T)) as T; if (result == null) { throw new InvalidOperationException(SR.Get(SRID.DeferringLoaderNoContext, typeof(DeferrableContentConverter).Name, typeof(T).Name)); } return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.IO; using System.Net; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Diagnostics; using System.ComponentModel; using System.Windows.Threading; using System.Windows.Media; using System.IO.Packaging; using MS.Internal.IO.Packaging; // for PackageCacheEntry using System.Globalization; using System.Windows.Navigation; using MS.Internal; using MS.Internal.Utility; using MS.Internal.AppModel; using MS.Utility; using System.Xaml; using System.Windows.Baml2006; using System.Windows.Markup; namespace System.Windows { public class DeferrableContentConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (typeof(Stream).IsAssignableFrom(sourceType) || sourceType == typeof(byte[])) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value != null) { if (context == null) { throw new ArgumentNullException("context"); } XamlSchemaContext xamlSchemaContext = RequireService (context).SchemaContext; Baml2006SchemaContext schemaContext = xamlSchemaContext as Baml2006SchemaContext; if (schemaContext == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBamlSchemaContext)); } IXamlObjectWriterFactory objectWriterFactory = RequireService (context); IProvideValueTarget ipvt = RequireService (context); IRootObjectProvider rootObjectProvider = RequireService (context); ResourceDictionary dictionary = ipvt.TargetObject as ResourceDictionary; if (dictionary == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedResourceDictionaryTarget)); } Stream stream = value as Stream; if (stream == null) { byte[] bytes = value as byte[]; if (bytes != null) { stream = new MemoryStream(bytes); } } if (stream == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBinaryContent)); } // DeferrableContent deferrableContext = new DeferrableContent(stream, schemaContext, objectWriterFactory, context, rootObjectProvider.RootObject); return deferrableContext; } return base.ConvertFrom(context, culture, value); } private static T RequireService (IServiceProvider provider) where T : class { T result = provider.GetService(typeof(T)) as T; if (result == null) { throw new InvalidOperationException(SR.Get(SRID.DeferringLoaderNoContext, typeof(DeferrableContentConverter).Name, typeof(T).Name)); } return result; } } } // 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
- ElementMarkupObject.cs
- x509store.cs
- SystemIcmpV4Statistics.cs
- XmlSchemaSimpleTypeList.cs
- ProxyWebPart.cs
- KnownTypesHelper.cs
- UrlMappingCollection.cs
- SqlDataSourceCache.cs
- LineGeometry.cs
- ColumnCollection.cs
- UmAlQuraCalendar.cs
- TimelineGroup.cs
- AppDomainFactory.cs
- RuntimeHelpers.cs
- SortQuery.cs
- ProfileServiceManager.cs
- SyndicationDeserializer.cs
- Version.cs
- NativeMethods.cs
- _Rfc2616CacheValidators.cs
- XmlQualifiedName.cs
- remotingproxy.cs
- WpfSharedXamlSchemaContext.cs
- HttpPostedFile.cs
- CodeSnippetStatement.cs
- AssociationEndMember.cs
- RepeaterItem.cs
- SqlGatherProducedAliases.cs
- ConstraintConverter.cs
- Int16AnimationUsingKeyFrames.cs
- PermissionSetEnumerator.cs
- ellipse.cs
- BinaryNode.cs
- SignedPkcs7.cs
- BlockCollection.cs
- DbConnectionPoolIdentity.cs
- WizardSideBarListControlItem.cs
- IItemContainerGenerator.cs
- SecurityUtils.cs
- SqlMethodAttribute.cs
- SspiNegotiationTokenAuthenticator.cs
- Pair.cs
- ZoomPercentageConverter.cs
- XmlElementAttribute.cs
- HttpModuleActionCollection.cs
- String.cs
- DataGridColumnFloatingHeader.cs
- PersistencePipeline.cs
- CompilerScopeManager.cs
- XmlSchemaSet.cs
- SafeSecurityHelper.cs
- BaseTemplateBuildProvider.cs
- GraphicsContext.cs
- ImpersonationContext.cs
- HttpModuleCollection.cs
- XPathSingletonIterator.cs
- StringBuilder.cs
- Delegate.cs
- ContentValidator.cs
- FontSource.cs
- FixedPage.cs
- ReflectionUtil.cs
- EntityDataSourceViewSchema.cs
- ConsumerConnectionPointCollection.cs
- ModifierKeysValueSerializer.cs
- UIEndRequest.cs
- SqlDependency.cs
- PartitionerQueryOperator.cs
- QuaternionKeyFrameCollection.cs
- XmlHierarchicalEnumerable.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- PartialCachingAttribute.cs
- PathTooLongException.cs
- PathFigureCollectionValueSerializer.cs
- Byte.cs
- ArithmeticException.cs
- RelationshipEndMember.cs
- SystemIPAddressInformation.cs
- EntityContainerEntitySetDefiningQuery.cs
- XmlSchemaSubstitutionGroup.cs
- OutputScopeManager.cs
- BulletedListDesigner.cs
- Tokenizer.cs
- SecurityException.cs
- ListenerElementsCollection.cs
- HtmlTextArea.cs
- TextEffectResolver.cs
- XmlToDatasetMap.cs
- Debugger.cs
- ModelUIElement3D.cs
- TableCellCollection.cs
- SqlEnums.cs
- SQLString.cs
- TimeoutException.cs
- ParameterCollection.cs
- RotationValidation.cs
- DispatcherProcessingDisabled.cs
- ObjectQueryProvider.cs
- PropertyCollection.cs
- ConfigurationStrings.cs