EmbedSample.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Diagnostics;
  3. using System.IO;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using Avalonia.Controls;
  7. using Avalonia.Platform;
  8. using Avalonia.Threading;
  9. namespace NativeEmbedSample
  10. {
  11. public partial class EmbedSample : NativeControlHost
  12. {
  13. public bool IsSecond { get; set; }
  14. protected override IPlatformHandle CreateNativeControlCore(IPlatformHandle parent)
  15. {
  16. #if DESKTOP
  17. if (OperatingSystem.IsLinux())
  18. return CreateLinux(parent);
  19. if (OperatingSystem.IsWindows())
  20. return CreateWin32(parent);
  21. if (OperatingSystem.IsMacOS())
  22. return CreateOSX(parent);
  23. #elif __ANDROID__ || ANDROID
  24. if (OperatingSystem.IsAndroid())
  25. return CreateAndroid(parent);
  26. #elif IOS
  27. if (OperatingSystem.IsIOS())
  28. return CreateIOS(parent);
  29. #endif
  30. return base.CreateNativeControlCore(parent);
  31. }
  32. protected override void DestroyNativeControlCore(IPlatformHandle control)
  33. {
  34. #if DESKTOP
  35. if (OperatingSystem.IsLinux())
  36. DestroyLinux(control);
  37. else if (OperatingSystem.IsWindows())
  38. DestroyWin32(control);
  39. else if (OperatingSystem.IsMacOS())
  40. DestroyOSX(control);
  41. #elif __ANDROID__ || ANDROID
  42. if (OperatingSystem.IsAndroid())
  43. DestroyAndroid(control);
  44. #elif IOS
  45. if (OperatingSystem.IsIOS())
  46. DestroyIOS(control);
  47. #endif
  48. else base.DestroyNativeControlCore(control);
  49. }
  50. }
  51. }