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
- MenuItemBindingCollection.cs
- CommunicationObjectAbortedException.cs
- ClrProviderManifest.cs
- RelativeSource.cs
- TextFindEngine.cs
- QilScopedVisitor.cs
- LabelAutomationPeer.cs
- TableColumn.cs
- SqlClientMetaDataCollectionNames.cs
- RegisteredExpandoAttribute.cs
- Component.cs
- StreamUpgradeInitiator.cs
- UIElementHelper.cs
- CornerRadiusConverter.cs
- xsdvalidator.cs
- WebPartsPersonalization.cs
- Exceptions.cs
- NavigationProperty.cs
- DbgCompiler.cs
- BuilderPropertyEntry.cs
- TextBox.cs
- DodSequenceMerge.cs
- StoreConnection.cs
- LoginStatusDesigner.cs
- ThrowHelper.cs
- ContextProperty.cs
- PointKeyFrameCollection.cs
- ConfigurationManagerInternalFactory.cs
- DateTimeUtil.cs
- Privilege.cs
- ObjectRef.cs
- RuntimeEnvironment.cs
- SQLByte.cs
- XmlnsDefinitionAttribute.cs
- _CookieModule.cs
- AssemblyEvidenceFactory.cs
- FieldAccessException.cs
- WebPartMenu.cs
- EncodingTable.cs
- safemediahandle.cs
- MeshGeometry3D.cs
- IPAddressCollection.cs
- Select.cs
- While.cs
- TemplateBindingExtension.cs
- GridViewRowPresenterBase.cs
- TerminatorSinks.cs
- wmiprovider.cs
- DataGridViewMethods.cs
- DocumentScope.cs
- ToolStripItemEventArgs.cs
- EntityParameterCollection.cs
- PropertyChangeTracker.cs
- FixedDocumentSequencePaginator.cs
- Attributes.cs
- PersonalizableTypeEntry.cs
- XmlObjectSerializerWriteContext.cs
- ObjectItemCachedAssemblyLoader.cs
- TdsEnums.cs
- ToolStripOverflowButton.cs
- Adorner.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- AnimationException.cs
- IDispatchConstantAttribute.cs
- TrackingMemoryStream.cs
- SqlClientPermission.cs
- XmlAnyAttributeAttribute.cs
- SymmetricKeyWrap.cs
- OdbcRowUpdatingEvent.cs
- PrePostDescendentsWalker.cs
- UriParserTemplates.cs
- DataTableMapping.cs
- MostlySingletonList.cs
- DirectoryRedirect.cs
- XPathParser.cs
- sqlser.cs
- WinInetCache.cs
- DataGridViewAccessibleObject.cs
- DataTableMapping.cs
- ServiceModelConfigurationSectionGroup.cs
- MeshGeometry3D.cs
- GridItemPattern.cs
- AbstractExpressions.cs
- LicenseException.cs
- SqlBuffer.cs
- WindowsGraphicsWrapper.cs
- AnimationStorage.cs
- UrlAuthorizationModule.cs
- DataSourceConverter.cs
- DrawTreeNodeEventArgs.cs
- ArgumentException.cs
- DomainLiteralReader.cs
- DirectionalLight.cs
- DataGridCommandEventArgs.cs
- DataGridViewAdvancedBorderStyle.cs
- ContextMarshalException.cs
- BinaryReader.cs
- TypeDescriptor.cs
- LayoutTable.cs
- UndoManager.cs