1 using System.ComponentModel;
2 using System.Runtime.CompilerServices;
4 namespace Xamarin.Forms.Pages
6 public class DataItem : IDataItem, INotifyPropertyChanged
15 public DataItem(string name, object value)
45 public event PropertyChangedEventHandler PropertyChanged;
47 public override bool Equals(object obj)
49 if (ReferenceEquals(null, obj))
51 if (ReferenceEquals(this, obj))
53 if (obj.GetType() != GetType())
55 return Equals((DataItem)obj);
58 public override int GetHashCode()
62 return ((_name?.GetHashCode() ?? 0) * 397) ^ (_val?.GetHashCode() ?? 0);
66 public static bool operator ==(DataItem left, DataItem right)
68 return Equals(left, right);
71 public static bool operator !=(DataItem left, DataItem right)
73 return !Equals(left, right);
76 protected bool Equals(DataItem other)
78 return string.Equals(_name, other._name) && Equals(_val, other._val);
81 protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
83 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));