Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Data / ValueConversionAttribute.cs / 1 / 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.
//----------------------------------------------------------------------------
//
//
// 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
- ValidationPropertyAttribute.cs
- CalendarDateChangedEventArgs.cs
- CachedPathData.cs
- DataGridViewComboBoxColumn.cs
- BCryptSafeHandles.cs
- ObjectManager.cs
- XmlSchemaExternal.cs
- SchemaCollectionPreprocessor.cs
- PngBitmapDecoder.cs
- Lasso.cs
- GenericRootAutomationPeer.cs
- HelpInfo.cs
- Vector3DAnimationBase.cs
- UnsafeNativeMethods.cs
- ChannelPoolSettingsElement.cs
- ToolStripSplitStackLayout.cs
- SafeArrayTypeMismatchException.cs
- WebPartConnectionsConnectVerb.cs
- AuthenticationException.cs
- VirtualPath.cs
- NetTcpBinding.cs
- CodeMemberField.cs
- TCPListener.cs
- Drawing.cs
- QueryException.cs
- FamilyTypefaceCollection.cs
- Style.cs
- PopupRoot.cs
- StrokeNodeEnumerator.cs
- ServicePointManager.cs
- WindowsFormsHostPropertyMap.cs
- PageHandlerFactory.cs
- IsolationInterop.cs
- CodeDOMUtility.cs
- IntSecurity.cs
- SecondaryIndexList.cs
- ProcessModelInfo.cs
- FormatVersion.cs
- SystemIPAddressInformation.cs
- odbcmetadatacollectionnames.cs
- FirstMatchCodeGroup.cs
- X509Certificate2.cs
- CellRelation.cs
- BitVector32.cs
- CacheAxisQuery.cs
- MergeEnumerator.cs
- DecoderReplacementFallback.cs
- CompilationSection.cs
- ProfileManager.cs
- IdentityHolder.cs
- MonthChangedEventArgs.cs
- DataGrid.cs
- TableItemPatternIdentifiers.cs
- ExternalException.cs
- DataGridViewCellParsingEventArgs.cs
- ProcessHostFactoryHelper.cs
- SHA1.cs
- TimeSpanValidator.cs
- PreviewPageInfo.cs
- WebPartZoneAutoFormat.cs
- SocketInformation.cs
- TextReader.cs
- DurableInstance.cs
- NonNullItemCollection.cs
- RowTypeElement.cs
- HtmlInputHidden.cs
- TemplateBindingExtensionConverter.cs
- ConfigXmlSignificantWhitespace.cs
- GridViewCancelEditEventArgs.cs
- AspNetCompatibilityRequirementsMode.cs
- CacheEntry.cs
- ElapsedEventArgs.cs
- CodeMemberMethod.cs
- MenuRendererClassic.cs
- RSAPKCS1SignatureFormatter.cs
- Message.cs
- XPathNodeList.cs
- InstanceBehavior.cs
- PreviewKeyDownEventArgs.cs
- NativeObjectSecurity.cs
- TdsRecordBufferSetter.cs
- DnsEndPoint.cs
- Int64.cs
- XmlDataImplementation.cs
- FreezableDefaultValueFactory.cs
- DataContract.cs
- LinqDataSourceContextData.cs
- TrackingLocationCollection.cs
- MultilineStringConverter.cs
- DataProtectionSecurityStateEncoder.cs
- CodeGroup.cs
- SrgsGrammarCompiler.cs
- ApplicationSecurityManager.cs
- ClientConvert.cs
- RectangleGeometry.cs
- SafeNativeMethods.cs
- SerializationFieldInfo.cs
- AsymmetricAlgorithm.cs
- ToolStripItemImageRenderEventArgs.cs
- OleDbInfoMessageEvent.cs