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
- RightsManagementEncryptedStream.cs
- PopOutPanel.cs
- UdpAnnouncementEndpoint.cs
- IntegerFacetDescriptionElement.cs
- IncrementalHitTester.cs
- SoapSchemaExporter.cs
- PageAdapter.cs
- HttpProfileGroupBase.cs
- TaskFormBase.cs
- SerTrace.cs
- RowsCopiedEventArgs.cs
- XmlTextReader.cs
- UIElement.cs
- LambdaCompiler.ControlFlow.cs
- WarningException.cs
- WebException.cs
- SystemKeyConverter.cs
- UnsafeNetInfoNativeMethods.cs
- FixedDocumentSequencePaginator.cs
- PriorityRange.cs
- ToolStripDropTargetManager.cs
- ConstraintCollection.cs
- JavaScriptSerializer.cs
- GenericParameterDataContract.cs
- GroupQuery.cs
- SourceInterpreter.cs
- HostingPreferredMapPath.cs
- XPathExpr.cs
- PassportAuthenticationEventArgs.cs
- CompoundFileDeflateTransform.cs
- StrongNameMembershipCondition.cs
- GestureRecognizer.cs
- HitTestWithPointDrawingContextWalker.cs
- PersistenceTypeAttribute.cs
- TextElement.cs
- BufferModeSettings.cs
- ValidatingReaderNodeData.cs
- CodeParameterDeclarationExpression.cs
- SemaphoreFullException.cs
- HopperCache.cs
- MsmqMessage.cs
- ParsedAttributeCollection.cs
- RijndaelManaged.cs
- DataGridViewBand.cs
- ImportedNamespaceContextItem.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ArrayTypeMismatchException.cs
- DataGridViewButtonCell.cs
- PropertyEmitter.cs
- Helper.cs
- SuspendDesigner.cs
- EmptyCollection.cs
- DbUpdateCommandTree.cs
- ReadOnlyDictionary.cs
- ToolStripItemEventArgs.cs
- DesignerSerializerAttribute.cs
- SqlSupersetValidator.cs
- HttpProfileGroupBase.cs
- ToolStripDropDownItem.cs
- MenuCommand.cs
- Cursors.cs
- NeutralResourcesLanguageAttribute.cs
- DbExpressionBuilder.cs
- RegexBoyerMoore.cs
- ConstraintConverter.cs
- DefinitionBase.cs
- DbParameterCollection.cs
- RenameRuleObjectDialog.Designer.cs
- BaseComponentEditor.cs
- WeakReference.cs
- SocketException.cs
- PowerStatus.cs
- QueryStringParameter.cs
- ProfilePropertySettings.cs
- DynamicDataRoute.cs
- WorkflowTransactionOptions.cs
- BuildDependencySet.cs
- PathTooLongException.cs
- InfoCardPolicy.cs
- XmlAttributeCache.cs
- DataGridViewUtilities.cs
- IInstanceContextProvider.cs
- SourceElementsCollection.cs
- DataGridHeaderBorder.cs
- SqlDependency.cs
- WebServiceMethodData.cs
- CheckBoxRenderer.cs
- OneWayChannelFactory.cs
- ApplicationInfo.cs
- Ipv6Element.cs
- sqlcontext.cs
- WebServiceEnumData.cs
- ObjectStateEntryDbDataRecord.cs
- OracleParameterCollection.cs
- FormViewCommandEventArgs.cs
- ConstraintCollection.cs
- Win32KeyboardDevice.cs
- EntityDataSourceColumn.cs
- WinInetCache.cs
- DiscoveryReference.cs