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
- DataRelation.cs
- DetailsViewDeleteEventArgs.cs
- XmlDataLoader.cs
- QilXmlReader.cs
- GeometryDrawing.cs
- StringTraceRecord.cs
- ConfigXmlAttribute.cs
- TransformConverter.cs
- QueryTask.cs
- DataServiceSaveChangesEventArgs.cs
- RNGCryptoServiceProvider.cs
- TextEmbeddedObject.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- DesignerDataTableBase.cs
- DropTarget.cs
- OrderByLifter.cs
- AbsoluteQuery.cs
- WorkflowMarkupElementEventArgs.cs
- DbMetaDataFactory.cs
- XslCompiledTransform.cs
- TextViewSelectionProcessor.cs
- MenuItemCollection.cs
- TransmissionStrategy.cs
- ParameterCollection.cs
- ServiceBehaviorElementCollection.cs
- SchemaCollectionCompiler.cs
- ListControl.cs
- Margins.cs
- SystemWebExtensionsSectionGroup.cs
- MediaPlayerState.cs
- CodeRemoveEventStatement.cs
- ChangeTracker.cs
- securitycriticaldataformultiplegetandset.cs
- ReadOnlyHierarchicalDataSource.cs
- OrderedParallelQuery.cs
- RepeaterCommandEventArgs.cs
- ChangesetResponse.cs
- Token.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- XmlSerializerVersionAttribute.cs
- TickBar.cs
- DataBoundControl.cs
- GreaterThanOrEqual.cs
- LinqDataView.cs
- ArrayList.cs
- Timeline.cs
- WebSysDisplayNameAttribute.cs
- ChildTable.cs
- SizeFConverter.cs
- ErrorTolerantObjectWriter.cs
- GroupBox.cs
- BaseTemplateBuildProvider.cs
- GenericArgumentsUpdater.cs
- Path.cs
- EntityViewContainer.cs
- OracleConnectionString.cs
- XmlSchemaIdentityConstraint.cs
- ToolStripItemGlyph.cs
- SmtpDigestAuthenticationModule.cs
- SurrogateChar.cs
- TypeRestriction.cs
- InputScope.cs
- PopupEventArgs.cs
- EventHandlerService.cs
- CSharpCodeProvider.cs
- DragStartedEventArgs.cs
- FixedFlowMap.cs
- SoapReflectionImporter.cs
- ScriptIgnoreAttribute.cs
- ComboBox.cs
- RoleGroupCollection.cs
- TextEditorCharacters.cs
- HttpApplication.cs
- AbstractDataSvcMapFileLoader.cs
- CodeMemberMethod.cs
- ErrorRuntimeConfig.cs
- StandardMenuStripVerb.cs
- recordstate.cs
- TransformerInfoCollection.cs
- Visual3DCollection.cs
- PenLineJoinValidation.cs
- cookiecollection.cs
- RangeValidator.cs
- EllipticalNodeOperations.cs
- RoleManagerSection.cs
- _NegoStream.cs
- PerspectiveCamera.cs
- unsafenativemethodstextservices.cs
- InputGestureCollection.cs
- Logging.cs
- _TLSstream.cs
- TypeExtension.cs
- TextEditorContextMenu.cs
- DataBindingExpressionBuilder.cs
- StrokeSerializer.cs
- CommandDesigner.cs
- UIElement3D.cs
- ColumnHeaderCollectionEditor.cs
- SystemIcmpV4Statistics.cs
- CellTreeNodeVisitors.cs