Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ThumbAutomationPeer.cs
- ConfigXmlText.cs
- ProfileEventArgs.cs
- View.cs
- ExceptQueryOperator.cs
- TableLayoutPanelCellPosition.cs
- NameSpaceExtractor.cs
- XmlUtil.cs
- DefaultMemberAttribute.cs
- HTMLTagNameToTypeMapper.cs
- validationstate.cs
- BaseContextMenu.cs
- XsltLoader.cs
- HtmlInputFile.cs
- PeerContact.cs
- AncillaryOps.cs
- RoleGroupCollection.cs
- InkCanvasAutomationPeer.cs
- RtType.cs
- TreePrinter.cs
- HtmlElementEventArgs.cs
- TableLayoutStyleCollection.cs
- PhysicalAddress.cs
- BmpBitmapDecoder.cs
- TextWriterTraceListener.cs
- ClientBuildManager.cs
- ClientSideQueueItem.cs
- SingletonChannelAcceptor.cs
- SqlXmlStorage.cs
- ContainerControl.cs
- ArrayWithOffset.cs
- CssTextWriter.cs
- SudsParser.cs
- InputLanguageManager.cs
- NetCodeGroup.cs
- ScrollBarRenderer.cs
- PropertyEntry.cs
- WmlMobileTextWriter.cs
- ExceptionRoutedEventArgs.cs
- TextSelectionHelper.cs
- ToolStripArrowRenderEventArgs.cs
- SmiSettersStream.cs
- TextTreePropertyUndoUnit.cs
- sortedlist.cs
- FamilyTypeface.cs
- InvokeBinder.cs
- GlyphRunDrawing.cs
- Column.cs
- RSAOAEPKeyExchangeFormatter.cs
- NestPullup.cs
- DataPager.cs
- FuncTypeConverter.cs
- RawStylusInput.cs
- IDispatchConstantAttribute.cs
- RecordsAffectedEventArgs.cs
- DataBoundControlHelper.cs
- ImplicitInputBrush.cs
- Nullable.cs
- RemotingAttributes.cs
- FamilyCollection.cs
- dbenumerator.cs
- ListItemCollection.cs
- CheckPair.cs
- XamlHttpHandlerFactory.cs
- HtmlMobileTextWriter.cs
- OdbcPermission.cs
- StylusSystemGestureEventArgs.cs
- HMACRIPEMD160.cs
- CmsUtils.cs
- RequiredFieldValidator.cs
- CancellableEnumerable.cs
- IdentityNotMappedException.cs
- DataBindingCollection.cs
- StrongName.cs
- OutputCacheEntry.cs
- MissingManifestResourceException.cs
- ListView.cs
- GregorianCalendarHelper.cs
- WsdlInspector.cs
- TokenBasedSetEnumerator.cs
- AlignmentXValidation.cs
- SqlDataSourceCommandEventArgs.cs
- Classification.cs
- DesignerVerbCollection.cs
- DetailsViewInsertedEventArgs.cs
- InlineCollection.cs
- JsonSerializer.cs
- ListBox.cs
- Input.cs
- XmlnsPrefixAttribute.cs
- LambdaCompiler.Unary.cs
- Select.cs
- NavigationHelper.cs
- PKCS1MaskGenerationMethod.cs
- EncoderParameter.cs
- EmptyStringExpandableObjectConverter.cs
- XmlCodeExporter.cs
- PropertyChangedEventManager.cs
- AppDomainManager.cs
- NameSpaceExtractor.cs