Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / EventSetterHandlerConverter.cs / 1305600 / EventSetterHandlerConverter.cs
// Copyright (C) Microsoft Corporation. All rights reserved. using System.ComponentModel; using System.Globalization; using System.Windows; using System.Collections.Generic; using System.Xaml; namespace System.Windows.Markup { ////// Type converter for RoutedEvent type /// public sealed class EventSetterHandlerConverter : TypeConverter { ////// Whether we can convert from a given type - this class only converts from string /// public override bool CanConvertFrom(ITypeDescriptorContext typeDescriptorContext, Type sourceType) { // We can only convert from a string and that too only if we have all the contextual information // Note: Sometimes even the serializer calls CanConvertFrom in order // to determine if it is a valid converter to use for serialization. if (sourceType == typeof(string)) { return true; } return false; } ////// Whether we can convert to a given type - this class only converts to string /// public override bool CanConvertTo(ITypeDescriptorContext typeDescriptorContext, Type destinationType) { return false; } ////// Convert a string like "Button.Click" into the corresponding RoutedEvent /// public override object ConvertFrom(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object source) { if (typeDescriptorContext == null) { throw new ArgumentNullException("typeDescriptorContext"); } if (source == null) { throw new ArgumentNullException("source"); } IRootObjectProvider rootProvider = typeDescriptorContext.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider; if (rootProvider != null && source is String) { IProvideValueTarget ipvt = typeDescriptorContext.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (ipvt != null) { EventSetter setter = ipvt.TargetObject as EventSetter; string handlerName; if(setter != null && (handlerName = source as string) != null) { handlerName = handlerName.Trim(); return Delegate.CreateDelegate(setter.Event.HandlerType, rootProvider.RootObject, handlerName); } } } throw GetConvertFromException(source); } ////// Convert a RoutedEventID into a XAML string like "Button.Click" /// public override object ConvertTo(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object value, Type destinationType) { throw GetConvertToException(value, destinationType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. // Copyright (C) Microsoft Corporation. All rights reserved. using System.ComponentModel; using System.Globalization; using System.Windows; using System.Collections.Generic; using System.Xaml; namespace System.Windows.Markup { ////// Type converter for RoutedEvent type /// public sealed class EventSetterHandlerConverter : TypeConverter { ////// Whether we can convert from a given type - this class only converts from string /// public override bool CanConvertFrom(ITypeDescriptorContext typeDescriptorContext, Type sourceType) { // We can only convert from a string and that too only if we have all the contextual information // Note: Sometimes even the serializer calls CanConvertFrom in order // to determine if it is a valid converter to use for serialization. if (sourceType == typeof(string)) { return true; } return false; } ////// Whether we can convert to a given type - this class only converts to string /// public override bool CanConvertTo(ITypeDescriptorContext typeDescriptorContext, Type destinationType) { return false; } ////// Convert a string like "Button.Click" into the corresponding RoutedEvent /// public override object ConvertFrom(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object source) { if (typeDescriptorContext == null) { throw new ArgumentNullException("typeDescriptorContext"); } if (source == null) { throw new ArgumentNullException("source"); } IRootObjectProvider rootProvider = typeDescriptorContext.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider; if (rootProvider != null && source is String) { IProvideValueTarget ipvt = typeDescriptorContext.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (ipvt != null) { EventSetter setter = ipvt.TargetObject as EventSetter; string handlerName; if(setter != null && (handlerName = source as string) != null) { handlerName = handlerName.Trim(); return Delegate.CreateDelegate(setter.Event.HandlerType, rootProvider.RootObject, handlerName); } } } throw GetConvertFromException(source); } ////// Convert a RoutedEventID into a XAML string like "Button.Click" /// public override object ConvertTo(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object value, Type destinationType) { throw GetConvertToException(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
- SiteMapDataSource.cs
- FreeFormDesigner.cs
- TransformDescriptor.cs
- VisualProxy.cs
- MimeTypePropertyAttribute.cs
- Events.cs
- DynamicResourceExtension.cs
- ADMembershipUser.cs
- Rfc2898DeriveBytes.cs
- KeyboardEventArgs.cs
- HandlerFactoryWrapper.cs
- ConfigDefinitionUpdates.cs
- HtmlWindowCollection.cs
- EnumCodeDomSerializer.cs
- GenericWebPart.cs
- AssemblyAttributesGoHere.cs
- UserControlCodeDomTreeGenerator.cs
- XmlSchemaSimpleTypeRestriction.cs
- NestPullup.cs
- ImmutableObjectAttribute.cs
- ExpressionBuilder.cs
- CriticalHandle.cs
- ProxyWebPartConnectionCollection.cs
- QilTypeChecker.cs
- DataGridViewElement.cs
- WebPartTransformerCollection.cs
- UIPropertyMetadata.cs
- PaperSize.cs
- FindCompletedEventArgs.cs
- SystemWebSectionGroup.cs
- WindowInteractionStateTracker.cs
- XPathNodeIterator.cs
- MouseGestureValueSerializer.cs
- TextAction.cs
- XmlDataSourceDesigner.cs
- SafeFileHandle.cs
- WeakReferenceList.cs
- FixedHyperLink.cs
- DbDataReader.cs
- ClientType.cs
- LicenseException.cs
- XpsFilter.cs
- WindowsSlider.cs
- SynchronizationLockException.cs
- MemoryPressure.cs
- MultiBinding.cs
- MessageEventSubscriptionService.cs
- FileStream.cs
- Screen.cs
- AuthenticationManager.cs
- SqlUtils.cs
- DataColumn.cs
- SerialPort.cs
- StreamReader.cs
- Rect.cs
- MethodToken.cs
- ProgramNode.cs
- RemotingSurrogateSelector.cs
- MembershipValidatePasswordEventArgs.cs
- UIElement.cs
- PinnedBufferMemoryStream.cs
- SqlGatherConsumedAliases.cs
- XmlTextWriter.cs
- DocumentGridContextMenu.cs
- InputLanguageCollection.cs
- UriTemplateVariableQueryValue.cs
- WebBrowserSiteBase.cs
- StrongNameUtility.cs
- DataListItem.cs
- DataBoundControlHelper.cs
- ActiveXHost.cs
- NativeCppClassAttribute.cs
- HttpApplicationFactory.cs
- PersonalizableAttribute.cs
- RegistryDataKey.cs
- TypeUtil.cs
- PageContentCollection.cs
- PeerToPeerException.cs
- StrongName.cs
- InternalBufferOverflowException.cs
- TraceFilter.cs
- CodeIdentifier.cs
- CompilerGlobalScopeAttribute.cs
- FixedSOMLineCollection.cs
- UserUseLicenseDictionaryLoader.cs
- EntityDescriptor.cs
- DataMisalignedException.cs
- MailFileEditor.cs
- APCustomTypeDescriptor.cs
- RelationshipFixer.cs
- DetailsViewUpdateEventArgs.cs
- ChannelManager.cs
- ParameterToken.cs
- FormatConvertedBitmap.cs
- InstanceDataCollection.cs
- ParseNumbers.cs
- DecimalStorage.cs
- GestureRecognizer.cs
- LinkConverter.cs
- PriorityRange.cs