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
- DocumentReferenceCollection.cs
- XmlSchemaObjectCollection.cs
- Material.cs
- RegistrationServices.cs
- MediaTimeline.cs
- Group.cs
- AudienceUriMode.cs
- PopupEventArgs.cs
- TrackingValidationObjectDictionary.cs
- SessionStateModule.cs
- RepeaterCommandEventArgs.cs
- MediaPlayer.cs
- ParameterModifier.cs
- PartBasedPackageProperties.cs
- FontUnitConverter.cs
- AsyncOperation.cs
- BevelBitmapEffect.cs
- PathSegmentCollection.cs
- RelationalExpressions.cs
- FunctionCommandText.cs
- PDBReader.cs
- SystemIcmpV4Statistics.cs
- HexParser.cs
- TreeNode.cs
- Shape.cs
- ThicknessKeyFrameCollection.cs
- OutputScopeManager.cs
- DataSourceCacheDurationConverter.cs
- MetadataProperty.cs
- EditableTreeList.cs
- CultureSpecificStringDictionary.cs
- RoleManagerSection.cs
- SectionXmlInfo.cs
- Screen.cs
- GZipStream.cs
- WebPartEditorApplyVerb.cs
- WebPartAuthorizationEventArgs.cs
- ViewGenResults.cs
- EntityDataSourceSelectedEventArgs.cs
- GridViewSelectEventArgs.cs
- GPPOINT.cs
- PhonemeEventArgs.cs
- ListBoxItemWrapperAutomationPeer.cs
- BindingMAnagerBase.cs
- XMLSchema.cs
- StructuralType.cs
- FixedSOMLineCollection.cs
- GatewayDefinition.cs
- EntityAdapter.cs
- EntityDataSourceStatementEditor.cs
- EntityDataSourceColumn.cs
- objectresult_tresulttype.cs
- TabPage.cs
- ExtensionSurface.cs
- ConfigurationElementCollection.cs
- EncoderParameters.cs
- RoleManagerSection.cs
- DesignerTextWriter.cs
- ObjectDataSourceSelectingEventArgs.cs
- ForwardPositionQuery.cs
- ConnectionStringSettings.cs
- LinqDataSourceSelectEventArgs.cs
- HierarchicalDataSourceControl.cs
- ReadOnlyHierarchicalDataSource.cs
- AbstractSvcMapFileLoader.cs
- ParameterElementCollection.cs
- UnsafeNativeMethods.cs
- translator.cs
- InstanceHandle.cs
- ProcessHostFactoryHelper.cs
- InstallerTypeAttribute.cs
- Cursor.cs
- DataGridViewSelectedRowCollection.cs
- Matrix3DConverter.cs
- ListItemViewControl.cs
- RepeatButton.cs
- XmlRootAttribute.cs
- FrameworkElement.cs
- NetNamedPipeSecurity.cs
- MsmqIntegrationProcessProtocolHandler.cs
- FlowDocumentScrollViewer.cs
- TextElementCollection.cs
- MachineKeyConverter.cs
- SizeIndependentAnimationStorage.cs
- DataViewManagerListItemTypeDescriptor.cs
- filewebresponse.cs
- EntitySqlQueryCacheKey.cs
- XslAst.cs
- InteropAutomationProvider.cs
- BaseProcessor.cs
- ToolStripDropDownMenu.cs
- AbandonedMutexException.cs
- SafeTokenHandle.cs
- ControlEvent.cs
- UndirectedGraph.cs
- ButtonChrome.cs
- PreviousTrackingServiceAttribute.cs
- MultiPageTextView.cs
- HttpStaticObjectsCollectionWrapper.cs
- OrderedDictionary.cs