Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Data / ValueConversionAttribute.cs / 1305600 / ValueConversionAttribute.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: allows the author of a IValueConverter // to specify what source and target property types the // ValueConverter is capable of converting // // Specs: http://avalon/connecteddata/Specs/Data%20Binding.mht // //--------------------------------------------------------------------------- using System; namespace System.Windows.Data { ////// This attribute allows the author of a ////// to specify what source and target property types the ValueConverter is capable of converting. /// This meta data is useful for designer tools to help categorize and match ValueConverters. /// /// Add this custom attribute to your IValueConverter class definition. /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] public sealed class ValueConversionAttribute : Attribute { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ////// [ValueConversion(typeof(Employee), typeof(Brush))] /// class MyConverter : IValueConverter /// { /// public object Convert(object value, Type targetType, object parameter, CultureInfo culture) /// { /// if (value is Dev) return Brushes.Beige; /// if (value is Employee) return Brushes.Salmon; /// return Brushes.Yellow; /// } /// } ///
////// Creates a new ValueConversionAttribute to indicate between /// what types of a data binding source and target this ValueConverter can convert. /// /// the expected source type this ValueConverter can handle /// the target type to which this ValueConverter can convert to public ValueConversionAttribute(Type sourceType, Type targetType) { if (sourceType == null) throw new ArgumentNullException("sourceType"); if (targetType == null) throw new ArgumentNullException("targetType"); _sourceType = sourceType; _targetType = targetType; } ////// The expected source type this ValueConverter can handle. /// public Type SourceType { get { return _sourceType; } } ////// The target type to which this ValueConverter can convert to. /// public Type TargetType { get { return _targetType; } } ////// The type of the optional ValueConverter Parameter object. /// public Type ParameterType { get { return _parameterType; } set { _parameterType = value; } } ////// Returns the unique identifier for this Attribute. /// // Type ID is used to remove redundant attributes by // putting all attributes in a dictionary of [TypeId, Attribute]. // If you want AllowMultiple attributes to work with designers, // you must override TypeId. The default implementation returns // this.GetType(), which is appropriate for AllowMultiple = false, but // not for AllowMultiple = true; public override object TypeId { // the attribute itself will be used as a key to the dictionary get { return this; } } ////// Returns the hash code for this instance. /// override public int GetHashCode() { // the default implementation does some funky enumeration over its fields // we can do better and use the 2 mandatory fields source/targetType's hash codes return _sourceType.GetHashCode() + _targetType.GetHashCode(); } //-------------------------------------------- // Private members //-------------------------------------------- private Type _sourceType; private Type _targetType; private Type _parameterType; } } // 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
- ExceptionUtil.cs
- columnmapkeybuilder.cs
- x509store.cs
- DynamicValidatorEventArgs.cs
- UnauthorizedAccessException.cs
- WaitHandleCannotBeOpenedException.cs
- WebPartAddingEventArgs.cs
- MenuItem.cs
- WindowAutomationPeer.cs
- FontFaceLayoutInfo.cs
- TabControlAutomationPeer.cs
- ToolboxItemLoader.cs
- DataService.cs
- DataPagerFieldItem.cs
- ScriptingWebServicesSectionGroup.cs
- TextBoxBaseDesigner.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- regiisutil.cs
- Figure.cs
- XmlSecureResolver.cs
- BinHexEncoder.cs
- DataTableMapping.cs
- SafeEventLogWriteHandle.cs
- TableSectionStyle.cs
- UndirectedGraph.cs
- TraceContextRecord.cs
- PostBackOptions.cs
- SocketElement.cs
- SqlCacheDependencyDatabase.cs
- PeerNearMe.cs
- XPathScanner.cs
- PageAction.cs
- ProcessExitedException.cs
- CacheEntry.cs
- ResourceExpressionBuilder.cs
- SystemResourceKey.cs
- DataPagerFieldItem.cs
- TraceSection.cs
- SemaphoreFullException.cs
- Timer.cs
- CodeSnippetExpression.cs
- SimpleBitVector32.cs
- ColorMap.cs
- Parser.cs
- ParameterToken.cs
- SocketException.cs
- XmlSchemaGroup.cs
- HttpListenerRequest.cs
- SqlCacheDependency.cs
- GlobalProxySelection.cs
- NetStream.cs
- Win32Exception.cs
- ErrorHandlerModule.cs
- PublishLicense.cs
- XmlNullResolver.cs
- MenuItemAutomationPeer.cs
- RemoteHelper.cs
- DataGridColumnCollection.cs
- SiteMapNodeCollection.cs
- DisplayInformation.cs
- GenericPrincipal.cs
- ConstantSlot.cs
- WebPartTransformer.cs
- Grid.cs
- SspiNegotiationTokenAuthenticator.cs
- ImageClickEventArgs.cs
- XmlDsigSep2000.cs
- DynamicControl.cs
- TreeNodeBinding.cs
- SortAction.cs
- LicenseContext.cs
- StyleSheetComponentEditor.cs
- Select.cs
- InternalCache.cs
- MasterPage.cs
- SetStateDesigner.cs
- TableLayoutSettingsTypeConverter.cs
- FileSystemInfo.cs
- LinkClickEvent.cs
- Condition.cs
- UnsafeNativeMethodsTablet.cs
- XmlDocumentType.cs
- StylusButtonEventArgs.cs
- WindowsEditBox.cs
- SqlDataRecord.cs
- LinqTreeNodeEvaluator.cs
- FlowchartDesigner.xaml.cs
- Exception.cs
- Camera.cs
- Utils.cs
- DrawTreeNodeEventArgs.cs
- GeneralTransform3DGroup.cs
- ThreadAttributes.cs
- HttpApplicationFactory.cs
- SafeEventHandle.cs
- Overlapped.cs
- UIHelper.cs
- SecurityVersion.cs
- SQLUtility.cs
- XmlDataSourceNodeDescriptor.cs