PageRenderTime 21ms CodeModel.GetById 13ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 1ms

/Main/src/DynamicDataDisplay/Converters/TwoValuesMultiConverter.cs

#
C# | 40 lines | 33 code | 7 blank | 0 comment | 6 complexity | fa8e8aac853ab9cb81e7af46fa06e601 MD5 | raw file
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Text;
 5using System.Windows.Data;
 6using System.Windows;
 7
 8namespace Microsoft.Research.DynamicDataDisplay.Converters
 9{
10	public abstract class TwoValuesMultiConverter<T1, T2> : IMultiValueConverter
11	{
12		#region IMultiValueConverter Members
13
14		public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
15		{
16			if (values != null && values.Length == 2)
17			{
18				if (values[0] is T1 && values[1] is T2)
19				{
20					T1 param1 = (T1)values[0];
21					T2 param2 = (T2)values[1];
22
23					var result = ConvertCore(param1, param2, targetType, parameter, culture);
24					return result;
25				}
26			}
27
28			return DependencyProperty.UnsetValue;
29		}
30
31		protected abstract object ConvertCore(T1 value1, T2 value2, Type targetType, object parameter, System.Globalization.CultureInfo culture);
32
33		public virtual object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
34		{
35			throw new NotSupportedException();
36		}
37
38		#endregion
39	}
40}