= List and ObservableCollections = Create a custom type: public enum TColorType { Red, Green, Blue, } public class TColor { public string Name { get; set; } public TColorType Type { get; set; } } Create a color list: using System.Linq; // Required for 'Where' lambda/linq statements using System.Collections.ObjectModel; // Required for ObservableCollection public class TColorList: List { ///---------------------------------------------------------------------------------------- /// Constructor ///---------------------------------------------------------------------------------------- public TColorList() { PopulateList(); } ///---------------------------------------------------------------------------------------- /// Populate list ///---------------------------------------------------------------------------------------- private void PopulateList() { Add(new TColor() { Name = "Red", Type = TColorType.Red }); Add(new TColor() { Name = "Green", Type = TColorType.Green }); Add(new TColor() { Name = "Blue", Type = TColorType.Blue }); } } Create a color collection: public class TColorCollection: ObservableCollection { ///---------------------------------------------------------------------------------------- /// /// Indexer overload. /// /// Color (string) /// TColor ///---------------------------------------------------------------------------------------- public TColor this[string aColorString] { get { return this.Where(n => n.Type.ToString().ToLower() == aColorString.ToLower()).SingleOrDefault(); } } ///---------------------------------------------------------------------------------------- /// /// Indexer overload. /// /// >Color /// TColor ///---------------------------------------------------------------------------------------- public TColor this[TColorType aColorType] { get { return this.Where(n => n.Type == aColorType).SingleOrDefault(); } } ///---------------------------------------------------------------------------------------- /// Constructor ///---------------------------------------------------------------------------------------- public TColorCollection() { PopulateCollection(); } ///---------------------------------------------------------------------------------------- /// Populate collection ///---------------------------------------------------------------------------------------- private void PopulateCollection() { Add(new TColor() { Name = "Red", Type = TColorType.Red }); Add(new TColor() { Name = "Green", Type = TColorType.Green }); Add(new TColor() { Name = "Blue", Type = TColorType.Blue }); } }