File: cdf\src\NetFx40\Tools\System.Activities.Presentation\System\Activities\Presentation\Base\Core\Internal\PropertyEditing\FromExpression\Framework\ValueEditors\ValueToIconConverter.cs
Project: ndp\System.Data.csproj (System.Data)
// -------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
// -------------------------------------------------------------------
//From \\authoring\Sparkle\Source\1.0.1083.0\Common\Source\Framework\ValueEditors
namespace System.Activities.Presentation.Internal.PropertyEditing.FromExpression.Framework.ValueEditors
{
    using System;
    using System.Globalization;
    using System.Windows;
    using System.Windows.Data;
    using System.Windows.Media;
    using System.Diagnostics.CodeAnalysis;
    using System.Activities.Presentation;
 
    // <summary>
    // Implement this interface to provide icons to the ValueToIconProvider
    // </summary>
    internal interface IIconProvider
    {
        ImageSource GetIconAsImageSource(object key, object parameter);
    }
 
    // <summary>
    // Gets an Icon as a Brush from the IIconProvider passed in as the first object of a multibinding
    // using the second object as the key.
    // </summary>
 
    [SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]
    internal class ValueToIconConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Length == 2)
            {
                IIconProvider iconProvider = values[0] as IIconProvider;
                object objectToLookUp = values[1];
                if (iconProvider != null && objectToLookUp != null)
                {
                    return iconProvider.GetIconAsImageSource(objectToLookUp, parameter);
                }
            }
 
            return null;
        }
 
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw FxTrace.Exception.AsError(new NotImplementedException(ExceptionStringTable.NoConvertBackForValueToIconConverter));
        }
    }
}