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
- MailMessage.cs
- EventDescriptor.cs
- ArrayWithOffset.cs
- DrawingState.cs
- TreeNodeStyleCollection.cs
- ComboBox.cs
- DerivedKeySecurityTokenStub.cs
- QuaternionConverter.cs
- DataBoundControl.cs
- XamlFrame.cs
- WebPartPersonalization.cs
- SQLUtility.cs
- ScaleTransform3D.cs
- LassoSelectionBehavior.cs
- TextSpan.cs
- TypedTableBaseExtensions.cs
- CodeCompileUnit.cs
- RawMouseInputReport.cs
- RoleManagerSection.cs
- ErrorFormatter.cs
- mediaclock.cs
- CodeChecksumPragma.cs
- ServiceXNameTypeConverter.cs
- FixedLineResult.cs
- Lasso.cs
- ErrorTableItemStyle.cs
- DataGridViewButtonCell.cs
- Label.cs
- PointCollection.cs
- ButtonBase.cs
- VisualTreeHelper.cs
- Point3DCollectionValueSerializer.cs
- Currency.cs
- DocumentGridContextMenu.cs
- EntityDataReader.cs
- LineBreak.cs
- _AutoWebProxyScriptEngine.cs
- ConstraintConverter.cs
- UIElementPropertyUndoUnit.cs
- DesignerTextWriter.cs
- httpserverutility.cs
- VScrollProperties.cs
- ParenthesizePropertyNameAttribute.cs
- OleDbParameterCollection.cs
- SortQueryOperator.cs
- BaseValidator.cs
- ConnectivityStatus.cs
- DataListItemCollection.cs
- FormCollection.cs
- ChannelDemuxer.cs
- ColorAnimation.cs
- VisualTreeFlattener.cs
- DataObjectFieldAttribute.cs
- autovalidator.cs
- ToolStripDropDownClosingEventArgs.cs
- DriveNotFoundException.cs
- OutputCacheSettingsSection.cs
- PenContext.cs
- SqlDataSourceFilteringEventArgs.cs
- EnvelopedSignatureTransform.cs
- ContextMenuAutomationPeer.cs
- DataGridView.cs
- WebPartCloseVerb.cs
- DataGridItemAutomationPeer.cs
- X509InitiatorCertificateServiceElement.cs
- ReflectionUtil.cs
- FlowDecisionLabelFeature.cs
- IconHelper.cs
- PropertyChangingEventArgs.cs
- ClientTargetCollection.cs
- Message.cs
- InvalidWMPVersionException.cs
- MouseBinding.cs
- GlyphElement.cs
- QueryInterceptorAttribute.cs
- SecurityKeyType.cs
- FormsAuthenticationUserCollection.cs
- ToolStripItemRenderEventArgs.cs
- DbConnectionPoolCounters.cs
- ThaiBuddhistCalendar.cs
- unsafenativemethodsother.cs
- TreeNodeMouseHoverEvent.cs
- MenuItem.cs
- ElementFactory.cs
- XpsPartBase.cs
- TriggerCollection.cs
- OLEDB_Enum.cs
- HttpServerVarsCollection.cs
- WebPartTransformerAttribute.cs
- InputMethodStateChangeEventArgs.cs
- FormsAuthenticationModule.cs
- URLAttribute.cs
- ConfigXmlText.cs
- documentsequencetextpointer.cs
- DataTransferEventArgs.cs
- QueryReaderSettings.cs
- CustomErrorCollection.cs
- IntegerValidatorAttribute.cs
- DefaultBinder.cs
- ToolStripItemEventArgs.cs