ToolTipPage.xaml.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using Avalonia;
  3. using Avalonia.Controls;
  4. using Avalonia.Controls.Primitives.PopupPositioning;
  5. using Avalonia.Interactivity;
  6. namespace ControlCatalog.Pages
  7. {
  8. public partial class ToolTipPage : UserControl
  9. {
  10. public ToolTipPage()
  11. {
  12. InitializeComponent();
  13. }
  14. private void ToolTipOpening(object? sender, CancelRoutedEventArgs args)
  15. {
  16. ((Control)args.Source!).SetValue(ToolTip.TipProperty, "New tip set from ToolTipOpening.");
  17. }
  18. public void CustomPlacementCallback(CustomPopupPlacement placement)
  19. {
  20. var r = new Random().Next();
  21. placement.Anchor = (r % 4) switch
  22. {
  23. 1 => PopupAnchor.Top,
  24. 2 => PopupAnchor.Left,
  25. 3 => PopupAnchor.Right,
  26. _ => PopupAnchor.Bottom,
  27. };
  28. placement.Gravity = (r % 4) switch
  29. {
  30. 1 => PopupGravity.Top,
  31. 2 => PopupGravity.Left,
  32. 3 => PopupGravity.Right,
  33. _ => PopupGravity.Bottom,
  34. };
  35. placement.Offset = new Point(r % 20, r % 20);
  36. }
  37. }
  38. }