DigitalFormEmbeddedMediaValues.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Runtime.CompilerServices;
  5. namespace PRS.Mobile
  6. {
  7. public class DigitalFormEmbeddedMediaValues : IEnumerable<DigitalFormEmbeddedMediaValue>, INotifyPropertyChanged
  8. {
  9. private readonly List<DigitalFormEmbeddedMediaValue> _values = new();
  10. public DigitalFormEmbeddedMediaValue[] Values => _values.ToArray();
  11. public IEnumerator<DigitalFormEmbeddedMediaValue> GetEnumerator() => _values.GetEnumerator();
  12. IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
  13. public void Add(DigitalFormEmbeddedMediaValue value)
  14. {
  15. _values.Add(value);
  16. OnPropertyChanged(nameof(Values));
  17. }
  18. public void Remove(DigitalFormEmbeddedMediaValue value)
  19. {
  20. if (_values.Contains(value))
  21. {
  22. _values.Remove(value);
  23. OnPropertyChanged(nameof(Values));
  24. }
  25. }
  26. public void Clear()
  27. {
  28. _values.Clear();
  29. OnPropertyChanged(nameof(Values));
  30. }
  31. public event PropertyChangedEventHandler PropertyChanged;
  32. protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  33. {
  34. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  35. }
  36. protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
  37. {
  38. if (EqualityComparer<T>.Default.Equals(field, value)) return false;
  39. field = value;
  40. OnPropertyChanged(propertyName);
  41. return true;
  42. }
  43. }
  44. }