ClipboardPage.xaml.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. using Avalonia;
  4. using Avalonia.Controls;
  5. using Avalonia.Input;
  6. using Avalonia.Interactivity;
  7. using Avalonia.Markup.Xaml;
  8. namespace ControlCatalog.Pages
  9. {
  10. public partial class ClipboardPage : UserControl
  11. {
  12. public ClipboardPage()
  13. {
  14. InitializeComponent();
  15. }
  16. private TextBox ClipboardContent => this.Get<TextBox>("ClipboardContent");
  17. private void InitializeComponent()
  18. {
  19. AvaloniaXamlLoader.Load(this);
  20. }
  21. private async void CopyText(object? sender, RoutedEventArgs args)
  22. {
  23. if (Application.Current!.Clipboard is { } clipboard && ClipboardContent is { } clipboardContent)
  24. await clipboard.SetTextAsync(clipboardContent.Text ?? String.Empty);
  25. }
  26. private async void PasteText(object? sender, RoutedEventArgs args)
  27. {
  28. if(Application.Current!.Clipboard is { } clipboard)
  29. {
  30. ClipboardContent.Text = await clipboard.GetTextAsync();
  31. }
  32. }
  33. private async void CopyTextDataObject(object? sender, RoutedEventArgs args)
  34. {
  35. if (Application.Current!.Clipboard is { } clipboard)
  36. {
  37. var dataObject = new DataObject();
  38. dataObject.Set(DataFormats.Text, ClipboardContent.Text ?? string.Empty);
  39. await clipboard.SetDataObjectAsync(dataObject);
  40. }
  41. }
  42. private async void PasteTextDataObject(object? sender, RoutedEventArgs args)
  43. {
  44. if (Application.Current!.Clipboard is { } clipboard)
  45. {
  46. ClipboardContent.Text = await clipboard.GetDataAsync(DataFormats.Text) as string ?? string.Empty;
  47. }
  48. }
  49. private async void CopyFilesDataObject(object? sender, RoutedEventArgs args)
  50. {
  51. if (Application.Current!.Clipboard is { } clipboard)
  52. {
  53. var files = (ClipboardContent.Text ?? String.Empty)
  54. .Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
  55. if (files.Length == 0)
  56. {
  57. return;
  58. }
  59. var dataObject = new DataObject();
  60. dataObject.Set(DataFormats.FileNames, files);
  61. await clipboard.SetDataObjectAsync(dataObject);
  62. }
  63. }
  64. private async void PasteFilesDataObject(object? sender, RoutedEventArgs args)
  65. {
  66. if (Application.Current!.Clipboard is { } clipboard)
  67. {
  68. var fiels = await clipboard.GetDataAsync(DataFormats.FileNames) as IEnumerable<string>;
  69. ClipboardContent.Text = fiels != null ? string.Join(Environment.NewLine, fiels) : string.Empty;
  70. }
  71. }
  72. private async void GetFormats(object sender, RoutedEventArgs args)
  73. {
  74. if (Application.Current!.Clipboard is { } clipboard)
  75. {
  76. var formats = await clipboard.GetFormatsAsync();
  77. ClipboardContent.Text = string.Join(Environment.NewLine, formats);
  78. }
  79. }
  80. private async void Clear(object sender, RoutedEventArgs args)
  81. {
  82. if (Application.Current!.Clipboard is { } clipboard)
  83. {
  84. await clipboard.ClearAsync();
  85. }
  86. }
  87. }
  88. }