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
- CalendarDesigner.cs
- UnknownBitmapDecoder.cs
- DataGridViewCellLinkedList.cs
- FeatureManager.cs
- SqlDelegatedTransaction.cs
- PropertyMetadata.cs
- EncryptedReference.cs
- VariableAction.cs
- HeaderedItemsControl.cs
- KeyBinding.cs
- TextUtf8RawTextWriter.cs
- ImageFormatConverter.cs
- ToolboxItemCollection.cs
- NativeMethods.cs
- DataTableClearEvent.cs
- GridViewAutoFormat.cs
- DataGridItemAutomationPeer.cs
- HostingPreferredMapPath.cs
- MailAddressParser.cs
- UriTemplateMatchException.cs
- WebPartsSection.cs
- AuthenticationException.cs
- PageAsyncTask.cs
- DesignerInterfaces.cs
- LocationUpdates.cs
- Pkcs7Recipient.cs
- Int64AnimationBase.cs
- safesecurityhelperavalon.cs
- OpenTypeLayout.cs
- StorageComplexPropertyMapping.cs
- PersonalizationProviderHelper.cs
- TransactionalPackage.cs
- RelationshipType.cs
- CompilationSection.cs
- TreeViewHitTestInfo.cs
- HttpDictionary.cs
- SearchForVirtualItemEventArgs.cs
- HttpResponse.cs
- PackWebRequest.cs
- XmlCustomFormatter.cs
- TextFormatter.cs
- ToolBarPanel.cs
- RegistryDataKey.cs
- TargetInvocationException.cs
- DesignerImageAdapter.cs
- FileInfo.cs
- Timer.cs
- FormViewRow.cs
- WindowsAuthenticationModule.cs
- VarRefManager.cs
- SafePipeHandle.cs
- NetCodeGroup.cs
- InternalRelationshipCollection.cs
- SQLBytesStorage.cs
- GradientBrush.cs
- GridViewDeleteEventArgs.cs
- Section.cs
- GridViewRowPresenterBase.cs
- TdsParserSafeHandles.cs
- ScriptControlManager.cs
- WebResourceUtil.cs
- XpsSerializationManagerAsync.cs
- HtmlInputButton.cs
- DesignerHost.cs
- DependencyPropertyKey.cs
- Operand.cs
- COMException.cs
- AstTree.cs
- UserControlBuildProvider.cs
- GridEntry.cs
- ProtocolsConfiguration.cs
- ObjectToken.cs
- OdbcConnection.cs
- AppDomainShutdownMonitor.cs
- MarkupCompiler.cs
- CheckBox.cs
- Transform.cs
- SymLanguageType.cs
- XMLSyntaxException.cs
- DecoderFallback.cs
- Literal.cs
- TransformedBitmap.cs
- WindowsFormsHelpers.cs
- Matrix.cs
- OutputWindow.cs
- IgnoreSection.cs
- CopyNodeSetAction.cs
- ResourceProviderFactory.cs
- LineSegment.cs
- followingsibling.cs
- Light.cs
- SqlGenerator.cs
- LocalizabilityAttribute.cs
- LogManagementAsyncResult.cs
- ByteStreamMessageEncoderFactory.cs
- XmlQualifiedName.cs
- PauseStoryboard.cs
- XPathBinder.cs
- AlphabeticalEnumConverter.cs
- EventLogPermissionEntry.cs