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.
///
/// [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;
/// }
/// }
///
///
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class ValueConversionAttribute : Attribute
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// 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
- VerbConverter.cs
- UnsafeNativeMethods.cs
- OdbcParameterCollection.cs
- RegexMatchCollection.cs
- SizeAnimationUsingKeyFrames.cs
- ActivityDesignerAccessibleObject.cs
- PerformanceCounterPermissionEntry.cs
- ComEventsSink.cs
- Column.cs
- ServiceThrottlingElement.cs
- DockPanel.cs
- ProjectionRewriter.cs
- JoinTreeNode.cs
- PeerPresenceInfo.cs
- DocumentXmlWriter.cs
- Mapping.cs
- DbgUtil.cs
- ImageSourceValueSerializer.cs
- TableRowCollection.cs
- NetCodeGroup.cs
- ExpressionHelper.cs
- SocketInformation.cs
- BoolLiteral.cs
- CustomAttributeFormatException.cs
- RangeBaseAutomationPeer.cs
- XamlPathDataSerializer.cs
- ArgumentNullException.cs
- XmlILTrace.cs
- StorageFunctionMapping.cs
- HttpProfileBase.cs
- ToolTipAutomationPeer.cs
- ColumnWidthChangingEvent.cs
- WaitHandleCannotBeOpenedException.cs
- XmlDataSource.cs
- ContentFilePart.cs
- AlternateView.cs
- ImageIndexEditor.cs
- TextServicesDisplayAttributePropertyRanges.cs
- FixedSOMGroup.cs
- WindowsAuthenticationModule.cs
- XPathAncestorIterator.cs
- RenderTargetBitmap.cs
- SplitContainer.cs
- ModulesEntry.cs
- RMPermissions.cs
- storepermissionattribute.cs
- nulltextnavigator.cs
- HMACRIPEMD160.cs
- SoapEnumAttribute.cs
- PlanCompiler.cs
- Viewport3DVisual.cs
- GorillaCodec.cs
- BooleanToVisibilityConverter.cs
- TextProviderWrapper.cs
- SplitterPanel.cs
- Claim.cs
- HandlerMappingMemo.cs
- BaseCodePageEncoding.cs
- sitestring.cs
- TopClause.cs
- RadioButtonList.cs
- SourceFileBuildProvider.cs
- Rect3DConverter.cs
- Scheduler.cs
- BitmapEffectInputData.cs
- FormsAuthenticationModule.cs
- ParenthesizePropertyNameAttribute.cs
- CheckBoxRenderer.cs
- Triangle.cs
- FeatureAttribute.cs
- XmlTextAttribute.cs
- Matrix.cs
- SelectionRangeConverter.cs
- ClaimSet.cs
- TextModifier.cs
- TextDecorationCollection.cs
- WebPartDisplayModeEventArgs.cs
- AbstractSvcMapFileLoader.cs
- MethodCallConverter.cs
- IgnoreFileBuildProvider.cs
- TableRowCollection.cs
- WebRequest.cs
- TimeManager.cs
- MD5.cs
- CreateUserWizardStep.cs
- EventTask.cs
- Internal.cs
- GridViewDeleteEventArgs.cs
- TextPattern.cs
- Model3D.cs
- OrderPreservingMergeHelper.cs
- SlotInfo.cs
- WebPartTransformer.cs
- FunctionImportMapping.cs
- DataListItemCollection.cs
- InternalTransaction.cs
- SettingsAttributes.cs
- SinglePageViewer.cs
- ContainsRowNumberChecker.cs
- EntityDataSourceState.cs