Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / RoutedEventConverter.cs / 1 / RoutedEventConverter.cs
// Copyright (C) Microsoft Corporation. All rights reserved. using System.ComponentModel; using System.Globalization; using System.Windows; namespace System.Windows.Markup { ////// Type converter for RoutedEvent type /// public sealed class RoutedEventConverter: 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) && (typeDescriptorContext is TypeConvertContext)) { 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) { string routedEventName = source as string; if( routedEventName != null ) { IServiceProvider serviceProvier = typeDescriptorContext as IServiceProvider; if (serviceProvier != null) { TypeConvertContext typeConvertContext = typeDescriptorContext as TypeConvertContext; ParserContext parserContext = typeConvertContext == null ? null : typeConvertContext.ParserContext; if( parserContext != null ) { XamlTypeMapper xamlTypeMapper = parserContext.XamlTypeMapper; if( xamlTypeMapper != null ) { RoutedEvent routedEvent; string nameSpace; nameSpace = ExtractNamespaceString( ref routedEventName, parserContext ); // Verify that there's at least one period. (A simple // but not foolproof check for "[class].[event]") if( routedEventName.IndexOf('.') != -1 ) { // When xamlTypeMapper is told to look for RoutedEventID, // we need "[class].[event]" because at this point we // have no idea what the owner type might be. // Fortunately, given "[class].[event]" xamlTypeMapper.GetRoutedEventID // can figure things out, so at this point we can pass // in 'null' for the ownerType and things will still work. routedEvent = xamlTypeMapper.GetRoutedEvent(null /* ownerType */, nameSpace, routedEventName); return routedEvent; } } } } } // Falling through here means we are unable to perform the conversion. 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); } // This routine is copied from TemplateBamlRecordReader. This functionality // is planned to be part of the utilities exposed by the parser, eliminating // the need to duplicate code. See task #18279 private string ExtractNamespaceString( ref string nameString, ParserContext parserContext ) { // The colon is what we look for to determine if there's a namespace prefix specifier. int nsIndex = nameString.IndexOf(':'); string nsPrefix = string.Empty; if( nsIndex != -1 ) { // Found a namespace prefix separator, so create replacement propertyName. // String processing - split "foons" from "BarClass.BazProp" nsPrefix = nameString.Substring (0, nsIndex); nameString = nameString.Substring (nsIndex + 1); } // Find the namespace, even if its the default one string namespaceURI = parserContext.XmlnsDictionary[nsPrefix]; if (namespaceURI == null) { throw new ArgumentException(SR.Get(SRID.ParserPrefixNSProperty, nsPrefix, nameString)); } return namespaceURI; } } } // 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
- RubberbandSelector.cs
- ProvideValueServiceProvider.cs
- CaseStatement.cs
- SessionChannels.cs
- ImageEditor.cs
- DockPanel.cs
- GridProviderWrapper.cs
- WebPartsPersonalizationAuthorization.cs
- TextEditorSelection.cs
- CultureSpecificStringDictionary.cs
- TextTreeTextNode.cs
- ReflectionUtil.cs
- TextPattern.cs
- ClientConvert.cs
- WebConvert.cs
- PostBackOptions.cs
- PassportAuthenticationModule.cs
- CroppedBitmap.cs
- PolygonHotSpot.cs
- AlignmentYValidation.cs
- CodeGenerator.cs
- MissingSatelliteAssemblyException.cs
- ServiceConfigurationTraceRecord.cs
- SQLSingleStorage.cs
- DecimalConstantAttribute.cs
- KerberosSecurityTokenProvider.cs
- DelegatingHeader.cs
- CodeAttributeDeclaration.cs
- CheckBoxRenderer.cs
- XmlSchemaAttributeGroup.cs
- TemplateParser.cs
- WorkflowTraceTransfer.cs
- GlobalItem.cs
- BuildDependencySet.cs
- EntityWrapperFactory.cs
- ConfigurationLoader.cs
- TagPrefixCollection.cs
- HostedElements.cs
- ExceptionRoutedEventArgs.cs
- FolderNameEditor.cs
- ListViewAutomationPeer.cs
- SerializerDescriptor.cs
- NavigationProperty.cs
- LazyInitializer.cs
- FormatException.cs
- XmlSchemaComplexType.cs
- LassoSelectionBehavior.cs
- RegionIterator.cs
- RangeBaseAutomationPeer.cs
- RIPEMD160Managed.cs
- HybridWebProxyFinder.cs
- ResourceAssociationSet.cs
- XmlNavigatorFilter.cs
- versioninfo.cs
- DataSourceHelper.cs
- WebPartMinimizeVerb.cs
- CombinedGeometry.cs
- HttpRuntimeSection.cs
- ImageAutomationPeer.cs
- WinEventTracker.cs
- RevocationPoint.cs
- SystemException.cs
- RuleInfoComparer.cs
- Speller.cs
- SchemaManager.cs
- RoleService.cs
- CloseCryptoHandleRequest.cs
- remotingproxy.cs
- ReadOnlyDataSource.cs
- SafeLocalMemHandle.cs
- ResXResourceSet.cs
- BitmapEffectDrawing.cs
- Codec.cs
- OracleParameter.cs
- XPathParser.cs
- AssertValidation.cs
- UmAlQuraCalendar.cs
- ColumnBinding.cs
- RequestCacheManager.cs
- BitmapEffectDrawingContextWalker.cs
- BamlLocalizableResourceKey.cs
- XmlSchemaFacet.cs
- RelationshipWrapper.cs
- CodeMemberField.cs
- NameTable.cs
- GridViewPageEventArgs.cs
- XmlCollation.cs
- SqlDataReader.cs
- CompositeControl.cs
- WebServiceHandler.cs
- XPathException.cs
- DataContractJsonSerializerOperationFormatter.cs
- ListViewItem.cs
- BuildProvidersCompiler.cs
- LowerCaseStringConverter.cs
- NavigationExpr.cs
- EntityClientCacheEntry.cs
- XmlConvert.cs
- ProcessHostFactoryHelper.cs
- ParenthesizePropertyNameAttribute.cs