Mini8Comparision.xaml.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. namespace HistoryView.Controls.Configs;
  2. public partial class Mini8Comparision : UserControl
  3. {
  4. public Mini8Comparision()
  5. {
  6. InitializeComponent();
  7. Comparision = [];
  8. }
  9. public TempConfigSubMini8 Source
  10. {
  11. get { return (TempConfigSubMini8)GetValue(SourceProperty); }
  12. set { SetValue(SourceProperty, value); }
  13. }
  14. public static readonly DependencyProperty SourceProperty =
  15. DependencyProperty.Register("Source", typeof(TempConfigSubMini8), typeof(Mini8Comparision), new PropertyMetadata(default, SourceChangedCallback));
  16. public TempConfigSubMini8 Target
  17. {
  18. get { return (TempConfigSubMini8)GetValue(TargetProperty); }
  19. set { SetValue(TargetProperty, value); }
  20. }
  21. public static readonly DependencyProperty TargetProperty =
  22. DependencyProperty.Register("Target", typeof(TempConfigSubMini8), typeof(Mini8Comparision), new PropertyMetadata(default, TargetChangedCallback));
  23. private static void SourceChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
  24. {
  25. if (d is not Mini8Comparision act)
  26. return;
  27. if (e.NewValue is not TempConfigSubMini8 config)
  28. return;
  29. if (config.ChannelConfig is null)
  30. return;
  31. foreach (var mini8 in config.ChannelConfig)
  32. {
  33. act.Comparision[mini8.Key] ??= new();
  34. act.Comparision[mini8.Key].Index = mini8.Key;
  35. act.Comparision[mini8.Key].Source = mini8.Value;
  36. }
  37. }
  38. private static void TargetChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
  39. {
  40. if (d is not Mini8Comparision act)
  41. return;
  42. if (e.NewValue is not TempConfigSubMini8 config)
  43. return;
  44. if (config.ChannelConfig is null)
  45. return;
  46. foreach (var mini8 in config.ChannelConfig)
  47. {
  48. act.Comparision[mini8.Key] ??= new();
  49. act.Comparision[mini8.Key].Index = mini8.Key;
  50. act.Comparision[mini8.Key].Target = mini8.Value;
  51. }
  52. }
  53. public ObservableDictionary<byte, Mini8COnfigComparisionData> Comparision
  54. {
  55. get { return (ObservableDictionary<byte, Mini8COnfigComparisionData>)GetValue(ComparisionProperty); }
  56. set { SetValue(ComparisionProperty, value); }
  57. }
  58. public static readonly DependencyProperty ComparisionProperty =
  59. DependencyProperty.Register("Comparision", typeof(ObservableDictionary<byte, Mini8COnfigComparisionData>), typeof(Mini8Comparision), new PropertyMetadata(default));
  60. }
  61. public partial class Mini8COnfigComparisionData : ObservableObject
  62. {
  63. [ObservableProperty]
  64. private byte _Index;
  65. [ObservableProperty]
  66. private string? _FileName;
  67. [ObservableProperty]
  68. private TempConfigSubChannel? _Source;
  69. [ObservableProperty]
  70. private TempConfigSubChannel? _Target;
  71. }