DynamicGridPopupColumnCell.xaml.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Runtime.CompilerServices;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using System.Windows.Shapes;
  17. namespace InABox.DynamicGrid
  18. {
  19. /// <summary>
  20. /// Interaction logic for DynamicGridPopupColumnCell.xaml
  21. /// </summary>
  22. public partial class DynamicGridPopupColumnCell : UserControl, INotifyPropertyChanged
  23. {
  24. public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
  25. "Value", typeof(Guid), typeof(DynamicGridPopupColumnCell), new FrameworkPropertyMetadata(
  26. propertyChangedCallback: new PropertyChangedCallback(Value_Changed)));
  27. private string _display;
  28. public string Display {
  29. get => _display;
  30. set
  31. {
  32. _display = value;
  33. NotifyPropertyChanged();
  34. }
  35. }
  36. public object? Value { get; set; }
  37. public delegate void SelectEvent();
  38. public delegate void ClearEvent();
  39. public delegate void ValueChangedEvent(Guid value);
  40. public SelectEvent? OnSelect;
  41. public ClearEvent? OnClear;
  42. public ValueChangedEvent? OnValueChanged;
  43. public event PropertyChangedEventHandler? PropertyChanged;
  44. public DynamicGridPopupColumnCell()
  45. {
  46. InitializeComponent();
  47. }
  48. private void Select_Click(object sender, RoutedEventArgs e)
  49. {
  50. OnSelect?.Invoke();
  51. }
  52. private void Clear_Click(object sender, RoutedEventArgs e)
  53. {
  54. OnClear?.Invoke();
  55. }
  56. private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
  57. {
  58. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  59. }
  60. private static void Value_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
  61. {
  62. var cell = (DynamicGridPopupColumnCell)d;
  63. cell.OnValueChanged?.Invoke((Guid)d.GetValue(ValueProperty));
  64. }
  65. }
  66. }