CheckBox.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Avalonia.Controls;
  2. using Avalonia.Data;
  3. using PixiEditor.Extensions.CommonApi.FlyUI.Events;
  4. namespace PixiEditor.Extensions.FlyUI.Elements;
  5. public class CheckBox : SingleChildLayoutElement
  6. {
  7. private Avalonia.Controls.CheckBox checkbox;
  8. public event ElementEventHandler<ToggleEventArgs> CheckedChanged
  9. {
  10. add => AddEvent(nameof(CheckedChanged), value);
  11. remove => RemoveEvent(nameof(CheckedChanged), value);
  12. }
  13. public override Control BuildNative()
  14. {
  15. checkbox = new Avalonia.Controls.CheckBox();
  16. Binding binding =
  17. new Binding(nameof(Child)) { Source = this, Converter = LayoutElementToNativeControlConverter.Instance };
  18. checkbox.Bind(ContentControl.ContentProperty, binding);
  19. checkbox.IsCheckedChanged += (sender, args) => RaiseEvent(
  20. nameof(CheckedChanged),
  21. new ToggleEventArgs((sender as Avalonia.Controls.CheckBox).IsChecked.Value) { Sender = this });
  22. return checkbox;
  23. }
  24. protected override void AddChild(Control child)
  25. {
  26. checkbox.Content = child;
  27. }
  28. protected override void RemoveChild()
  29. {
  30. checkbox.Content = null;
  31. }
  32. }