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
- QueryStringParameter.cs
- EncryptedKeyHashIdentifierClause.cs
- SystemPens.cs
- DataGridViewIntLinkedList.cs
- BaseProcessor.cs
- FloatAverageAggregationOperator.cs
- BitmapEffectrendercontext.cs
- ConfigurationValues.cs
- QilFactory.cs
- ErrorTableItemStyle.cs
- WebConfigurationFileMap.cs
- PageEventArgs.cs
- PersianCalendar.cs
- Size.cs
- BasicBrowserDialog.designer.cs
- XmlProcessingInstruction.cs
- ZipPackage.cs
- xmlfixedPageInfo.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- LinkLabel.cs
- ListViewTableCell.cs
- Pts.cs
- sortedlist.cs
- Utils.cs
- KeyInterop.cs
- WindowsAltTab.cs
- PngBitmapEncoder.cs
- LinearKeyFrames.cs
- ProviderConnectionPoint.cs
- EncoderExceptionFallback.cs
- QilStrConcat.cs
- ContourSegment.cs
- GreenMethods.cs
- SemanticResultValue.cs
- XmlSchemaAnnotated.cs
- XmlNamedNodeMap.cs
- HandleRef.cs
- ListSourceHelper.cs
- RtfNavigator.cs
- WindowShowOrOpenTracker.cs
- DataGridViewHeaderCell.cs
- CorrelationTokenTypeConvertor.cs
- __ComObject.cs
- LongTypeConverter.cs
- CodeEntryPointMethod.cs
- ListViewGroupConverter.cs
- DataGridColumnCollectionEditor.cs
- ServiceHttpModule.cs
- ScriptingSectionGroup.cs
- ContextProperty.cs
- AssemblyInfo.cs
- WindowsAuthenticationModule.cs
- PersonalizableAttribute.cs
- PersonalizablePropertyEntry.cs
- OdbcDataReader.cs
- EventLogReader.cs
- BuildProviderAppliesToAttribute.cs
- CaseStatementSlot.cs
- TraceInternal.cs
- StaticTextPointer.cs
- DataViewManagerListItemTypeDescriptor.cs
- EdmScalarPropertyAttribute.cs
- _SafeNetHandles.cs
- IPEndPoint.cs
- Operand.cs
- BamlRecordWriter.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- UndoManager.cs
- TypefaceCollection.cs
- RtfToken.cs
- TypefaceMetricsCache.cs
- LocalizabilityAttribute.cs
- SoapSchemaImporter.cs
- SymbolPair.cs
- TextTreeTextElementNode.cs
- ParagraphResult.cs
- FlowDocumentPage.cs
- AnnotationAuthorChangedEventArgs.cs
- CustomCategoryAttribute.cs
- TextServicesCompartment.cs
- ArraySet.cs
- StylusShape.cs
- TimeSpanFormat.cs
- TopClause.cs
- ToolBarButtonClickEvent.cs
- HttpCookiesSection.cs
- Baml2006ReaderSettings.cs
- MessageQueueConverter.cs
- StrokeCollectionDefaultValueFactory.cs
- MultipleViewProviderWrapper.cs
- Mouse.cs
- GenericFlowSwitchHelper.cs
- TextLineResult.cs
- PageBuildProvider.cs
- FixedFlowMap.cs
- TargetInvocationException.cs
- RTLAwareMessageBox.cs
- ProxyWebPartManager.cs
- TimelineCollection.cs
- DataGridViewCellMouseEventArgs.cs