= 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 });
}
}