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
- mda.cs
- SafeBitVector32.cs
- Action.cs
- SqlDataSourceWizardForm.cs
- StrokeCollection2.cs
- RawStylusActions.cs
- ProcessHostServerConfig.cs
- SymmetricSecurityBindingElement.cs
- rsa.cs
- DateBoldEvent.cs
- RemoteWebConfigurationHostStream.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- PathParser.cs
- Win32.cs
- WebPartConnection.cs
- VBCodeProvider.cs
- TreeNodeCollection.cs
- CommandValueSerializer.cs
- RefreshEventArgs.cs
- CorrelationRequestContext.cs
- FlagsAttribute.cs
- FontStyles.cs
- RegexNode.cs
- CounterCreationData.cs
- CurrentTimeZone.cs
- SectionVisual.cs
- PrintDialog.cs
- BooleanAnimationUsingKeyFrames.cs
- TreeNode.cs
- FlowDocumentFormatter.cs
- BaseDataListDesigner.cs
- WeakRefEnumerator.cs
- PrintEvent.cs
- DateTimeUtil.cs
- StretchValidation.cs
- DataGridViewRowCollection.cs
- ContentTextAutomationPeer.cs
- FamilyMapCollection.cs
- SmtpReplyReaderFactory.cs
- DragEvent.cs
- ShaderEffect.cs
- DataSourceControl.cs
- ListBindingHelper.cs
- PriorityQueue.cs
- ObjectDataSourceDisposingEventArgs.cs
- CacheForPrimitiveTypes.cs
- EmptyReadOnlyDictionaryInternal.cs
- BamlRecords.cs
- TextAction.cs
- DefaultValidator.cs
- XmlCDATASection.cs
- PageAdapter.cs
- TemplateContentLoader.cs
- BitmapMetadata.cs
- BitmapEffectInputConnector.cs
- ErrorReporting.cs
- MailWebEventProvider.cs
- BindingValueChangedEventArgs.cs
- TokenBasedSetEnumerator.cs
- XsltLoader.cs
- ToolStripContentPanelRenderEventArgs.cs
- VisualProxy.cs
- TextSegment.cs
- ObjectConverter.cs
- UseLicense.cs
- NegationPusher.cs
- CTreeGenerator.cs
- FormDesigner.cs
- TablePattern.cs
- ToolTip.cs
- ServiceDiscoveryBehavior.cs
- Variable.cs
- LinkedResourceCollection.cs
- ListViewItem.cs
- DesignerView.xaml.cs
- MimeReflector.cs
- DynamicDocumentPaginator.cs
- DataKeyPropertyAttribute.cs
- BufferBuilder.cs
- _UriSyntax.cs
- CodeDefaultValueExpression.cs
- SiteMapPath.cs
- MailHeaderInfo.cs
- StorageMappingItemCollection.cs
- AuthenticateEventArgs.cs
- ObjectStateFormatter.cs
- UriScheme.cs
- XamlFxTrace.cs
- Stopwatch.cs
- CustomSignedXml.cs
- ListViewInsertEventArgs.cs
- Clipboard.cs
- XmlHelper.cs
- Group.cs
- UIElementHelper.cs
- SmiContextFactory.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- SqlWebEventProvider.cs
- WebPartsPersonalization.cs
- ExecutedRoutedEventArgs.cs