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
- diagnosticsswitches.cs
- ConfigurationSectionCollection.cs
- InputQueueChannel.cs
- MLangCodePageEncoding.cs
- TemplatedWizardStep.cs
- TreeViewImageKeyConverter.cs
- ListDataHelper.cs
- ParagraphVisual.cs
- CompileLiteralTextParser.cs
- FontWeightConverter.cs
- BitmapSourceSafeMILHandle.cs
- ServiceObjectContainer.cs
- ReturnType.cs
- SlipBehavior.cs
- HeaderCollection.cs
- LabelLiteral.cs
- AssemblyAttributes.cs
- HintTextMaxWidthConverter.cs
- activationcontext.cs
- InfiniteIntConverter.cs
- InputLangChangeEvent.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- InvokeHandlers.cs
- HttpResponseInternalWrapper.cs
- MailDefinition.cs
- ExtensionQuery.cs
- TypeInitializationException.cs
- FileNameEditor.cs
- TemplateGroupCollection.cs
- CleanUpVirtualizedItemEventArgs.cs
- Control.cs
- MissingMemberException.cs
- SqlTypeConverter.cs
- WorkflowDefinitionContext.cs
- PathData.cs
- SystemFonts.cs
- AuthenticationModuleElementCollection.cs
- AutoResetEvent.cs
- ServicePoint.cs
- XmlEncodedRawTextWriter.cs
- HMAC.cs
- WebPartMenuStyle.cs
- FormClosingEvent.cs
- MessageDecoder.cs
- EventLogTraceListener.cs
- PropertyStore.cs
- processwaithandle.cs
- RefreshPropertiesAttribute.cs
- ActivityMarkupSerializationProvider.cs
- QueryCursorEventArgs.cs
- CompressEmulationStream.cs
- controlskin.cs
- XpsFilter.cs
- StackBuilderSink.cs
- ConfigUtil.cs
- TextBoxBase.cs
- HtmlInputReset.cs
- ellipse.cs
- Parsers.cs
- DesignerMetadata.cs
- TcpActivation.cs
- Misc.cs
- OdbcConnectionFactory.cs
- GroupBox.cs
- wgx_sdk_version.cs
- LineBreakRecord.cs
- ProtocolElementCollection.cs
- AccessText.cs
- SqlBinder.cs
- SqlConnectionStringBuilder.cs
- QfeChecker.cs
- webeventbuffer.cs
- SocketElement.cs
- WebUtility.cs
- ExclusiveTcpTransportManager.cs
- AttributeEmitter.cs
- HttpCapabilitiesSectionHandler.cs
- Operand.cs
- DataGridViewCellFormattingEventArgs.cs
- WorkflowApplicationAbortedEventArgs.cs
- Msmq4PoisonHandler.cs
- HandleCollector.cs
- CompilerTypeWithParams.cs
- LinqExpressionNormalizer.cs
- ImageBrush.cs
- Int32Collection.cs
- ScriptManager.cs
- Semaphore.cs
- IndicFontClient.cs
- StandardCommands.cs
- EdmType.cs
- HttpModuleCollection.cs
- PrimaryKeyTypeConverter.cs
- DelegateCompletionCallbackWrapper.cs
- BitmapData.cs
- BaseDataList.cs
- EmptyImpersonationContext.cs
- ActiveXHost.cs
- SimpleTextLine.cs
- ThemeConfigurationDialog.cs