using System; using System.ComponentModel; using System.Collections.Generic; namespace Common.Infrastructure.ViewModels { public class ListItemViewModel : ListItemViewModel { public ListItemViewModel() : this(String.Empty) { } public ListItemViewModel(string displayText) : this(displayText, displayText) { } public ListItemViewModel(string displayText, object data) : base(displayText, data) { } } public class ListItemViewModel : INotifyPropertyChanged, IEqualityComparer { public override bool Equals(object obj) { if (obj == null) return false; var other = obj as ListItemViewModel; if (other == null) return false; if (!(Equals(this.Data, other.Data))) return false; return true; } public bool Equals(TData x, TData y) { return EqualityComparer.Default.Equals(x, y); } public override int GetHashCode() { return base.GetHashCode(); } public int GetHashCode(TData obj) { return obj.GetHashCode(); } public ListItemViewModel() : this(String.Empty, default(TData)) { } public ListItemViewModel(string displayText) : this(displayText, default(TData)) { } public ListItemViewModel(string displayText, TData data) { _displayText = displayText; _data = data; } private string _displayText; public virtual string DisplayText { get { return _displayText; } set { _displayText = value; RaisePropertyChanged("DisplayText"); } } private TData _data; public virtual TData Data { get { return _data; } set { _data = value; RaisePropertyChanged("Data"); } } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string propertyName) { if (PropertyChanged == null) return; PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }