Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Animation / RepeatBehaviorConverter.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- altserialization.cs
- ContentElement.cs
- OleDbEnumerator.cs
- DesignTimeTemplateParser.cs
- ToolBar.cs
- _SSPIWrapper.cs
- BitmapEffectRenderDataResource.cs
- TextTreeFixupNode.cs
- RulePatternOps.cs
- Propagator.cs
- DataGridViewBand.cs
- OleDbReferenceCollection.cs
- InitializeCorrelation.cs
- XmlNodeComparer.cs
- JoinGraph.cs
- basecomparevalidator.cs
- TableLayoutStyle.cs
- BitmapDecoder.cs
- EndpointPerformanceCounters.cs
- DataServiceRequestException.cs
- WebPartDeleteVerb.cs
- SqlVisitor.cs
- EncoderParameter.cs
- SecurityRuntime.cs
- TemplatedEditableDesignerRegion.cs
- DiscoveryDocumentReference.cs
- __ComObject.cs
- PropertyGridEditorPart.cs
- DodSequenceMerge.cs
- DesignParameter.cs
- WorkflowDesignerColors.cs
- VisualBrush.cs
- RightsManagementPermission.cs
- FactoryGenerator.cs
- RouteItem.cs
- ResourceKey.cs
- NameValuePermission.cs
- MessageQueueEnumerator.cs
- HMACSHA256.cs
- AutomationElementCollection.cs
- LogLogRecordHeader.cs
- DbRetry.cs
- EDesignUtil.cs
- RadioButtonBaseAdapter.cs
- SettingsPropertyValue.cs
- DesignerActionService.cs
- NavigationProperty.cs
- OdbcErrorCollection.cs
- WsatServiceAddress.cs
- CodeCompileUnit.cs
- SchemaCreator.cs
- DesignerAttribute.cs
- WbmpConverter.cs
- InstanceNormalEvent.cs
- HttpApplication.cs
- _Rfc2616CacheValidators.cs
- CodeDelegateCreateExpression.cs
- SecurityBindingElement.cs
- UserMapPath.cs
- HttpHandler.cs
- TripleDES.cs
- GlyphCache.cs
- BitmapEffectGroup.cs
- InputManager.cs
- DuplicateWaitObjectException.cs
- IntegrationExceptionEventArgs.cs
- HttpException.cs
- SafeProcessHandle.cs
- XPathMultyIterator.cs
- ProvidersHelper.cs
- OracleParameter.cs
- DirectionalAction.cs
- CatalogZoneDesigner.cs
- EntityDataSourceViewSchema.cs
- ChangeNode.cs
- GridViewUpdatedEventArgs.cs
- CodeNamespaceImport.cs
- TableLayoutSettingsTypeConverter.cs
- MetadataSerializer.cs
- MethodCallTranslator.cs
- DispatchOperation.cs
- SqlXml.cs
- NextPreviousPagerField.cs
- HtmlInputSubmit.cs
- ExtractorMetadata.cs
- RelationshipType.cs
- TemplatePartAttribute.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ObfuscationAttribute.cs
- PerformanceCounterManager.cs
- fixedPageContentExtractor.cs
- XXXInfos.cs
- RadioButtonFlatAdapter.cs
- EventListener.cs
- CacheAxisQuery.cs
- KnownBoxes.cs
- Graph.cs
- ChangePasswordDesigner.cs
- InteropBitmapSource.cs
- TemplateKey.cs