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
- WorkflowRuntimeServiceElement.cs
- DropSourceBehavior.cs
- EtwTrackingBehavior.cs
- ReadOnlyDictionary.cs
- StretchValidation.cs
- HtmlTernaryTree.cs
- DataObjectMethodAttribute.cs
- Operators.cs
- TrackBarDesigner.cs
- ListBoxChrome.cs
- SafeWaitHandle.cs
- Blend.cs
- ButtonChrome.cs
- CodeValidator.cs
- XmlAttributeProperties.cs
- HttpCacheVaryByContentEncodings.cs
- TCEAdapterGenerator.cs
- CapabilitiesUse.cs
- XD.cs
- CoreSwitches.cs
- FlowSwitchLink.cs
- SymbolMethod.cs
- XmlWriter.cs
- XmlReturnReader.cs
- DataRowChangeEvent.cs
- MenuBase.cs
- XmlAttributeProperties.cs
- ComIntegrationManifestGenerator.cs
- EDesignUtil.cs
- GridViewUpdateEventArgs.cs
- AnchoredBlock.cs
- MinMaxParagraphWidth.cs
- EditorZoneBase.cs
- FixedSOMSemanticBox.cs
- SqlParameterizer.cs
- Select.cs
- ParseElementCollection.cs
- SqlCommandSet.cs
- ProjectionRewriter.cs
- EntityDataSourceChangedEventArgs.cs
- DiagnosticStrings.cs
- XmlChildNodes.cs
- ProfileProvider.cs
- ItemType.cs
- DefaultPerformanceCounters.cs
- ControlPropertyNameConverter.cs
- Panel.cs
- DocumentGrid.cs
- UseLicense.cs
- HMACSHA1.cs
- PropertyTab.cs
- ServerValidateEventArgs.cs
- FormsAuthentication.cs
- WeakRefEnumerator.cs
- SmtpNtlmAuthenticationModule.cs
- ApplicationId.cs
- TextCompositionEventArgs.cs
- GeometryModel3D.cs
- ComboBoxAutomationPeer.cs
- ContainerParaClient.cs
- JoinGraph.cs
- Win32SafeHandles.cs
- QilTernary.cs
- DataRelation.cs
- FileReservationCollection.cs
- NativeActivityTransactionContext.cs
- EmptyCollection.cs
- TokenFactoryCredential.cs
- PtsPage.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- RequestCachePolicy.cs
- BaseDataBoundControl.cs
- UnsafeNativeMethods.cs
- BuildProvider.cs
- EmbeddedObject.cs
- NullReferenceException.cs
- ServiceProviders.cs
- SamlSecurityTokenAuthenticator.cs
- PocoEntityKeyStrategy.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- GridViewAutomationPeer.cs
- Method.cs
- XamlPathDataSerializer.cs
- Color.cs
- WindowsButton.cs
- XMLSyntaxException.cs
- UnknownMessageReceivedEventArgs.cs
- GuidTagList.cs
- StateMachineWorkflow.cs
- TextChange.cs
- CheckBoxFlatAdapter.cs
- AttributeUsageAttribute.cs
- SqlDataSourceConfigureSortForm.cs
- QilCloneVisitor.cs
- SystemColorTracker.cs
- PathFigureCollection.cs
- OuterGlowBitmapEffect.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ByteStorage.cs
- ApplicationManager.cs