DFVideoControl.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using InABox.Core;
  2. using InABox.WPF;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. namespace InABox.DynamicGrid
  11. {
  12. public class DFVideoControl : DynamicFormFieldControl<DFLayoutVideoField, DFLayoutVideoFieldProperties, byte[]>
  13. {
  14. Button PlayButton;
  15. Button PauseButton;
  16. byte[]? Data;
  17. protected override FrameworkElement Create()
  18. {
  19. var grid = new Grid();
  20. grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
  21. grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
  22. grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
  23. grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
  24. PlayButton = new Button
  25. {
  26. Width = 25,
  27. Height = 25,
  28. Margin = new Thickness(5)
  29. };
  30. PlayButton.Content = new Image
  31. {
  32. Source = Wpf.Resources.play_button.AsBitmapImage(),
  33. };
  34. PlayButton.Click += PlayButton_Click;
  35. PlayButton.SetGridPosition(1, 0);
  36. PauseButton = new Button
  37. {
  38. Width = 25,
  39. Height = 25,
  40. Margin = new Thickness(5),
  41. Visibility = Visibility.Hidden
  42. };
  43. PauseButton.Content = new Image
  44. {
  45. Source = Wpf.Resources.pause_button.AsBitmapImage()
  46. };
  47. PauseButton.Click += PauseButton_Click;
  48. PauseButton.SetGridPosition(1, 0);
  49. grid.Children.Add(PlayButton);
  50. grid.Children.Add(PauseButton);
  51. return grid;
  52. }
  53. private void PlayButton_Click(object sender, RoutedEventArgs e)
  54. {
  55. //MediaElement.Play();
  56. PlayButton.Visibility = Visibility.Hidden;
  57. PauseButton.Visibility = Visibility.Visible;
  58. }
  59. private void PauseButton_Click(object sender, RoutedEventArgs e)
  60. {
  61. //MediaElement.Pause();
  62. PauseButton.Visibility = Visibility.Hidden;
  63. PlayButton.Visibility = Visibility.Visible;
  64. }
  65. public override byte[] GetValue()
  66. {
  67. return Data ?? Array.Empty<byte>();
  68. }
  69. public override void SetValue(byte[]? value)
  70. {
  71. Data = value;
  72. }
  73. protected override bool IsEmpty() => Data is null || Data.Length == 0;
  74. }
  75. }