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
- EntityViewGenerator.cs
- OdbcCommandBuilder.cs
- ButtonBaseAdapter.cs
- Properties.cs
- EncryptedKey.cs
- PackageFilter.cs
- XhtmlConformanceSection.cs
- SiteMapNodeCollection.cs
- UserPreferenceChangedEventArgs.cs
- XPathException.cs
- FontWeights.cs
- TreeViewDataItemAutomationPeer.cs
- Control.cs
- SRDisplayNameAttribute.cs
- WebPartConnectionsConnectVerb.cs
- StructuredTypeInfo.cs
- MonthCalendar.cs
- DataServiceProcessingPipelineEventArgs.cs
- MetadataConversionError.cs
- CellParagraph.cs
- ValidationSummary.cs
- XsdSchemaFileEditor.cs
- HttpValueCollection.cs
- SupportsEventValidationAttribute.cs
- DeploymentExceptionMapper.cs
- RepeaterItemEventArgs.cs
- ProcessHostMapPath.cs
- CoTaskMemUnicodeSafeHandle.cs
- OutputCacheProfileCollection.cs
- PointLightBase.cs
- ErasingStroke.cs
- QueueProcessor.cs
- BackgroundFormatInfo.cs
- AuthenticationServiceManager.cs
- OutputCacheSettings.cs
- BStrWrapper.cs
- ResXBuildProvider.cs
- DataGridViewColumn.cs
- path.cs
- ToolBarTray.cs
- XmlTypeAttribute.cs
- EventlogProvider.cs
- XsdValidatingReader.cs
- DescendentsWalker.cs
- OleDbTransaction.cs
- VerificationAttribute.cs
- CountAggregationOperator.cs
- Byte.cs
- BaseTemplateBuildProvider.cs
- ConnectionManagementElement.cs
- SecurityHeader.cs
- CodeTypeReferenceSerializer.cs
- RegexCaptureCollection.cs
- complextypematerializer.cs
- ConfigXmlReader.cs
- AssertHelper.cs
- UniqueIdentifierService.cs
- XmlSchemaNotation.cs
- HealthMonitoringSection.cs
- CodeMemberField.cs
- HwndMouseInputProvider.cs
- DataQuery.cs
- TableParaClient.cs
- Int64Animation.cs
- UIElementParagraph.cs
- MissingMethodException.cs
- Descriptor.cs
- Transform3DCollection.cs
- BridgeDataReader.cs
- PictureBox.cs
- CodeIdentifiers.cs
- SqlDependency.cs
- IItemContainerGenerator.cs
- HttpDictionary.cs
- QilParameter.cs
- WSIdentityFaultException.cs
- ExtensionQuery.cs
- SettingsBindableAttribute.cs
- ToolTipService.cs
- ImageClickEventArgs.cs
- ManagedFilter.cs
- WorkflowApplicationUnloadedException.cs
- ToggleProviderWrapper.cs
- XmlSchemaAny.cs
- PropertyEmitterBase.cs
- UrlPath.cs
- SemanticResolver.cs
- DeleteWorkflowOwnerCommand.cs
- ProviderMetadata.cs
- DictionaryBase.cs
- XamlWriter.cs
- ParserExtension.cs
- ProfileSection.cs
- TraceXPathNavigator.cs
- SettingsPropertyValueCollection.cs
- ColumnResizeAdorner.cs
- COAUTHINFO.cs
- EllipseGeometry.cs
- AsyncParams.cs
- PerspectiveCamera.cs