1: public class EnumConverter : IValueConverter
2: {
3: private List<object> items;
4:
5: public List<object> Items
6: {
7: get
8: {
9: if (items == null)
10: items = new List<object>();
11:
12: return items;
13: }
14: }
15:
16: public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
17: {
18: if (value == null)
19: throw new ArgumentNullException("value");
20: else if (value is bool)
21: return this.Items.ElementAtOrDefault(System.Convert.ToByte(value));
22: else if (value is byte)
23: return this.Items.ElementAtOrDefault(System.Convert.ToByte(value));
24: else if (value is short)
25: return this.Items.ElementAtOrDefault(System.Convert.ToInt16(value));
26: else if (value is int)
27: return this.Items.ElementAtOrDefault(System.Convert.ToInt32(value));
28: else if (value is long)
29: return this.Items.ElementAtOrDefault(System.Convert.ToInt32(value));
30: else if (value is Enum)
31: return this.Items.ElementAtOrDefault(System.Convert.ToInt32(value));
32:
33: throw new InvalidOperationException(string.Format("Invalid input value of type '{0}'", value.GetType()));
34: }
35:
36: public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
37: {
38: if (value == null)
39: throw new ArgumentNullException("value");
40:
41: return this.Items.Where(b => b.Equals(value)).Select((a, b) => b);
42: }
43: }