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
- AstNode.cs
- ConsumerConnectionPoint.cs
- NameScope.cs
- UITypeEditors.cs
- OperationSelectorBehavior.cs
- EntityDataSourceEntitySetNameItem.cs
- NativeMethods.cs
- HierarchicalDataBoundControlAdapter.cs
- KnownBoxes.cs
- GenericTextProperties.cs
- BuilderPropertyEntry.cs
- CodeCastExpression.cs
- DocumentPageViewAutomationPeer.cs
- WorkflowMarkupSerializerMapping.cs
- StrokeNodeOperations.cs
- COM2ComponentEditor.cs
- SqlServer2KCompatibilityAnnotation.cs
- ServiceDesigner.cs
- RequestBringIntoViewEventArgs.cs
- SharedUtils.cs
- SQLBytesStorage.cs
- Attributes.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- RootAction.cs
- SemanticKeyElement.cs
- PKCS1MaskGenerationMethod.cs
- DataGridView.cs
- KeyConstraint.cs
- CdpEqualityComparer.cs
- TextEndOfLine.cs
- FontNamesConverter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- AttachedPropertyDescriptor.cs
- AssemblyInfo.cs
- KeySplineConverter.cs
- FunctionMappingTranslator.cs
- JsonObjectDataContract.cs
- WebServiceParameterData.cs
- HtmlForm.cs
- StrongNameKeyPair.cs
- MetabaseServerConfig.cs
- TextTabProperties.cs
- DesignerProperties.cs
- RestClientProxyHandler.cs
- OutputScopeManager.cs
- ActivityTypeResolver.xaml.cs
- ToolStripSplitStackLayout.cs
- DockPatternIdentifiers.cs
- ContentElement.cs
- MenuItem.cs
- Zone.cs
- MediaEntryAttribute.cs
- CalculatedColumn.cs
- CodeMethodReturnStatement.cs
- CallSiteBinder.cs
- QilXmlWriter.cs
- ZipQueryOperator.cs
- ThaiBuddhistCalendar.cs
- XmlMapping.cs
- CreateRefExpr.cs
- ZipIOModeEnforcingStream.cs
- PropertyGridCommands.cs
- ContentFilePart.cs
- FormViewModeEventArgs.cs
- HttpClientCertificate.cs
- ZipIOExtraFieldPaddingElement.cs
- ViewManager.cs
- HtmlHead.cs
- ErrorLog.cs
- PasswordPropertyTextAttribute.cs
- Clipboard.cs
- XmlSortKey.cs
- ConfigurationValues.cs
- BindableTemplateBuilder.cs
- XmlQueryType.cs
- InvalidEnumArgumentException.cs
- Metafile.cs
- SafePEFileHandle.cs
- JsonByteArrayDataContract.cs
- NetworkInterface.cs
- SafeNativeMethods.cs
- TCEAdapterGenerator.cs
- ElementMarkupObject.cs
- FocusTracker.cs
- BrowserDefinition.cs
- Win32KeyboardDevice.cs
- AppLevelCompilationSectionCache.cs
- _SSPISessionCache.cs
- OleDbFactory.cs
- AutoScrollHelper.cs
- ISAPIRuntime.cs
- MenuItemStyleCollection.cs
- _ConnectStream.cs
- DateTimeValueSerializerContext.cs
- DataViewListener.cs
- ArithmeticException.cs
- PartitionResolver.cs
- FolderBrowserDialog.cs
- Clause.cs
- DataGridViewCellStyle.cs