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
- AutoResizedEvent.cs
- FrameworkElementAutomationPeer.cs
- ObjectDataSourceDisposingEventArgs.cs
- IdentitySection.cs
- EncodedStreamFactory.cs
- TargetPerspective.cs
- WSTrustDec2005.cs
- GPRECT.cs
- LambdaCompiler.Address.cs
- _FtpControlStream.cs
- Int32Animation.cs
- StringStorage.cs
- DataGridTable.cs
- XmlObjectSerializerReadContext.cs
- Serializer.cs
- SpotLight.cs
- ResourceProperty.cs
- CachedBitmap.cs
- PngBitmapEncoder.cs
- DataTable.cs
- LineServicesRun.cs
- TemplateField.cs
- RtfFormatStack.cs
- ForeignConstraint.cs
- Converter.cs
- AttachedProperty.cs
- WorkflowIdleElement.cs
- ExceptionValidationRule.cs
- SingleKeyFrameCollection.cs
- StrokeCollection2.cs
- AtomServiceDocumentSerializer.cs
- Types.cs
- ScriptDescriptor.cs
- Serializer.cs
- DispatcherHookEventArgs.cs
- ClientTargetSection.cs
- PackUriHelper.cs
- CallSite.cs
- ClientTargetSection.cs
- Delegate.cs
- OracleColumn.cs
- DynamicValidator.cs
- SessionEndingEventArgs.cs
- InternalConfigRoot.cs
- AssemblyEvidenceFactory.cs
- DeferrableContent.cs
- AlternateViewCollection.cs
- WorkflowTraceTransfer.cs
- DataGridViewAccessibleObject.cs
- ImageDrawing.cs
- SQLRoleProvider.cs
- Button.cs
- OutputCacheProfile.cs
- ClientSideQueueItem.cs
- DocumentXmlWriter.cs
- QueryContinueDragEvent.cs
- RemotingException.cs
- TextComposition.cs
- HttpConfigurationSystem.cs
- ConnectionStringSettings.cs
- EntityContainerEmitter.cs
- FontEmbeddingManager.cs
- WebPartsPersonalization.cs
- AxisAngleRotation3D.cs
- RadioButtonRenderer.cs
- XmlArrayAttribute.cs
- Menu.cs
- ExpressionBuilderCollection.cs
- VirtualDirectoryMappingCollection.cs
- HwndStylusInputProvider.cs
- XPathArrayIterator.cs
- VisualStyleRenderer.cs
- HashJoinQueryOperatorEnumerator.cs
- ExpressionTable.cs
- PanelStyle.cs
- StaticSiteMapProvider.cs
- ReachPrintTicketSerializer.cs
- ScrollableControl.cs
- AsymmetricAlgorithm.cs
- Italic.cs
- HttpApplicationFactory.cs
- EditorPartChrome.cs
- Win32.cs
- AVElementHelper.cs
- XPathSelectionIterator.cs
- GeneralTransform3D.cs
- NavigationHelper.cs
- FormsAuthenticationCredentials.cs
- TextTrailingWordEllipsis.cs
- WaitForChangedResult.cs
- InitializingNewItemEventArgs.cs
- XPathSingletonIterator.cs
- ObjectTypeMapping.cs
- Profiler.cs
- TableItemStyle.cs
- Array.cs
- ClientEventManager.cs
- EmptyCollection.cs
- UnknownBitmapEncoder.cs
- Console.cs