Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media / Animation / RepeatBehaviorConverter.cs / 1 / RepeatBehaviorConverter.cs
//------------------------------------------------------------------------------ // Microsoft Windows Client Platform // Copyright (c) Microsoft Corporation, 2004 // // File: RepeatBehaviorConverter.cs //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Security; namespace System.Windows.Media.Animation { ////// /// public sealed class RepeatBehaviorConverter : TypeConverter { #region Data private static char[] _iterationCharacter = new char[] { 'x' }; #endregion ////// CanConvertFrom - Returns whether or not this class can convert from a given type /// ///public override bool CanConvertFrom(ITypeDescriptorContext td, Type t) { if (t == typeof(string)) { return true; } else { return false; } } /// /// TypeConverter method override. /// /// ITypeDescriptorContext /// Type to convert to ///true if conversion is possible ///public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if ( destinationType == typeof(InstanceDescriptor) || destinationType == typeof(string)) { return true; } else { return false; } } /// /// ConvertFrom /// ///public override object ConvertFrom( ITypeDescriptorContext td, CultureInfo cultureInfo, object value) { string stringValue = value as string; if (stringValue != null) { stringValue = stringValue.Trim(); if (stringValue == "Forever") { return RepeatBehavior.Forever; } else if ( stringValue.Length > 0 && stringValue[stringValue.Length - 1] == _iterationCharacter[0]) { string stringDoubleValue = stringValue.TrimEnd(_iterationCharacter); double doubleValue = (double)TypeDescriptor.GetConverter(typeof(double)).ConvertFrom(td, cultureInfo, stringDoubleValue); return new RepeatBehavior(doubleValue); } } // The value is not Forever or an iteration count so it's either a TimeSpan // or we'll let the TimeSpanConverter raise the appropriate exception. TimeSpan timeSpanValue = (TimeSpan)TypeDescriptor.GetConverter(typeof(TimeSpan)).ConvertFrom(td, cultureInfo, stringValue); return new RepeatBehavior(timeSpanValue); } /// /// TypeConverter method implementation. /// /// ITypeDescriptorContext /// current culture (see CLR specs) /// value to convert from /// Type to convert to ///converted value ////// /// Critical: calls InstanceDescriptor ctor which LinkDemands /// PublicOK: can only make an InstanceDescriptor for RepeatBehavior, not an arbitrary class /// [SecurityCritical] public override object ConvertTo( ITypeDescriptorContext context, CultureInfo cultureInfo, object value, Type destinationType) { if ( value is RepeatBehavior && destinationType != null) { RepeatBehavior repeatBehavior = (RepeatBehavior)value; if (destinationType == typeof(InstanceDescriptor)) { MemberInfo mi; if (repeatBehavior == RepeatBehavior.Forever) { mi = typeof(RepeatBehavior).GetProperty("Forever"); return new InstanceDescriptor(mi, null); } else if (repeatBehavior.HasCount) { mi = typeof(RepeatBehavior).GetConstructor(new Type[] { typeof(double) }); return new InstanceDescriptor(mi, new object[] { repeatBehavior.Count }); } else if (repeatBehavior.HasDuration) { mi = typeof(RepeatBehavior).GetConstructor(new Type[] { typeof(TimeSpan) }); return new InstanceDescriptor(mi, new object[] { repeatBehavior.Duration }); } else { Debug.Fail("Unknown type of RepeatBehavior passed to RepeatBehaviorConverter."); } } else if (destinationType == typeof(string)) { return repeatBehavior.InternalToString(null, cultureInfo); } } // We can't do the conversion, let the base class raise the // appropriate exception. return base.ConvertTo(context, cultureInfo, value, destinationType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // Microsoft Windows Client Platform // Copyright (c) Microsoft Corporation, 2004 // // File: RepeatBehaviorConverter.cs //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Security; namespace System.Windows.Media.Animation { ////// /// public sealed class RepeatBehaviorConverter : TypeConverter { #region Data private static char[] _iterationCharacter = new char[] { 'x' }; #endregion ////// CanConvertFrom - Returns whether or not this class can convert from a given type /// ///public override bool CanConvertFrom(ITypeDescriptorContext td, Type t) { if (t == typeof(string)) { return true; } else { return false; } } /// /// TypeConverter method override. /// /// ITypeDescriptorContext /// Type to convert to ///true if conversion is possible ///public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if ( destinationType == typeof(InstanceDescriptor) || destinationType == typeof(string)) { return true; } else { return false; } } /// /// ConvertFrom /// ///public override object ConvertFrom( ITypeDescriptorContext td, CultureInfo cultureInfo, object value) { string stringValue = value as string; if (stringValue != null) { stringValue = stringValue.Trim(); if (stringValue == "Forever") { return RepeatBehavior.Forever; } else if ( stringValue.Length > 0 && stringValue[stringValue.Length - 1] == _iterationCharacter[0]) { string stringDoubleValue = stringValue.TrimEnd(_iterationCharacter); double doubleValue = (double)TypeDescriptor.GetConverter(typeof(double)).ConvertFrom(td, cultureInfo, stringDoubleValue); return new RepeatBehavior(doubleValue); } } // The value is not Forever or an iteration count so it's either a TimeSpan // or we'll let the TimeSpanConverter raise the appropriate exception. TimeSpan timeSpanValue = (TimeSpan)TypeDescriptor.GetConverter(typeof(TimeSpan)).ConvertFrom(td, cultureInfo, stringValue); return new RepeatBehavior(timeSpanValue); } /// /// TypeConverter method implementation. /// /// ITypeDescriptorContext /// current culture (see CLR specs) /// value to convert from /// Type to convert to ///converted value ////// /// Critical: calls InstanceDescriptor ctor which LinkDemands /// PublicOK: can only make an InstanceDescriptor for RepeatBehavior, not an arbitrary class /// [SecurityCritical] public override object ConvertTo( ITypeDescriptorContext context, CultureInfo cultureInfo, object value, Type destinationType) { if ( value is RepeatBehavior && destinationType != null) { RepeatBehavior repeatBehavior = (RepeatBehavior)value; if (destinationType == typeof(InstanceDescriptor)) { MemberInfo mi; if (repeatBehavior == RepeatBehavior.Forever) { mi = typeof(RepeatBehavior).GetProperty("Forever"); return new InstanceDescriptor(mi, null); } else if (repeatBehavior.HasCount) { mi = typeof(RepeatBehavior).GetConstructor(new Type[] { typeof(double) }); return new InstanceDescriptor(mi, new object[] { repeatBehavior.Count }); } else if (repeatBehavior.HasDuration) { mi = typeof(RepeatBehavior).GetConstructor(new Type[] { typeof(TimeSpan) }); return new InstanceDescriptor(mi, new object[] { repeatBehavior.Duration }); } else { Debug.Fail("Unknown type of RepeatBehavior passed to RepeatBehaviorConverter."); } } else if (destinationType == typeof(string)) { return repeatBehavior.InternalToString(null, cultureInfo); } } // We can't do the conversion, let the base class raise the // appropriate exception. return base.ConvertTo(context, cultureInfo, value, destinationType); } } } // 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
- StringFunctions.cs
- WindowsTokenRoleProvider.cs
- FilePrompt.cs
- ButtonChrome.cs
- AuthenticationServiceManager.cs
- RectangleConverter.cs
- ApplyImportsAction.cs
- LinqDataSourceEditData.cs
- PrintPreviewGraphics.cs
- MimeTypeAttribute.cs
- XhtmlTextWriter.cs
- SystemDropShadowChrome.cs
- WebEncodingValidatorAttribute.cs
- AnchoredBlock.cs
- RequestStatusBarUpdateEventArgs.cs
- OdbcHandle.cs
- ToolStripCustomTypeDescriptor.cs
- DataContractJsonSerializerOperationFormatter.cs
- ZipIOFileItemStream.cs
- DrawingContext.cs
- SEHException.cs
- WebDescriptionAttribute.cs
- GlyphRunDrawing.cs
- ChangePassword.cs
- NamespaceExpr.cs
- GetUserPreferenceRequest.cs
- CodeAccessPermission.cs
- CodeTypeReferenceExpression.cs
- ColorTransform.cs
- WhitespaceSignificantCollectionAttribute.cs
- UnsafeNativeMethods.cs
- ClientSettings.cs
- securitycriticaldataClass.cs
- DataChangedEventManager.cs
- ObjectItemLoadingSessionData.cs
- XmlSchemaInfo.cs
- DefaultValueTypeConverter.cs
- COM2PropertyDescriptor.cs
- Message.cs
- DataServiceClientException.cs
- ExtractedStateEntry.cs
- DoubleCollectionConverter.cs
- RenderData.cs
- HttpDictionary.cs
- JoinTreeNode.cs
- AppModelKnownContentFactory.cs
- DependencyProperty.cs
- XmlSerializationGeneratedCode.cs
- TextServicesCompartmentContext.cs
- PointConverter.cs
- WeakReferenceKey.cs
- FieldNameLookup.cs
- MatrixCamera.cs
- Int16AnimationBase.cs
- RectValueSerializer.cs
- CodeTypeMemberCollection.cs
- HttpHeaderCollection.cs
- _SslState.cs
- AppDomainAttributes.cs
- QueryResponse.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- DiscoveryInnerClientAdhoc11.cs
- QuadraticBezierSegment.cs
- DrawingGroupDrawingContext.cs
- __Error.cs
- WebPartHelpVerb.cs
- ElementsClipboardData.cs
- AuthenticationConfig.cs
- DiscoveryClientElement.cs
- WorkflowServiceBuildProvider.cs
- WebPartDescription.cs
- FontNamesConverter.cs
- WebBaseEventKeyComparer.cs
- base64Transforms.cs
- ProcessHostServerConfig.cs
- ViewService.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- DesignerSerializationOptionsAttribute.cs
- OdbcPermission.cs
- smtppermission.cs
- CLSCompliantAttribute.cs
- CheckBoxField.cs
- TypeDelegator.cs
- ToolboxComponentsCreatedEventArgs.cs
- WebServiceHost.cs
- InkCanvasSelectionAdorner.cs
- CatalogZone.cs
- SecurityChannel.cs
- CodeDomSerializer.cs
- InheritanceAttribute.cs
- Freezable.cs
- IntranetCredentialPolicy.cs
- SelectionEditor.cs
- ToolStripContentPanelRenderEventArgs.cs
- RedistVersionInfo.cs
- Cell.cs
- Message.cs
- X509AsymmetricSecurityKey.cs
- XmlSecureResolver.cs
- DateTimeConverter.cs