ClipboardPage.xaml.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. await Application.Current.Clipboard.SetTextAsync(ClipboardContent.Text);
  24. }
  25. private async void PasteText(object sender, RoutedEventArgs args)
  26. {
  27. ClipboardContent.Text = await Application.Current.Clipboard.GetTextAsync();
  28. }
  29. private async void CopyTextDataObject(object sender, RoutedEventArgs args)
  30. {
  31. var dataObject = new DataObject();
  32. dataObject.Set(DataFormats.Text, ClipboardContent.Text ?? string.Empty);
  33. await Application.Current.Clipboard.SetDataObjectAsync(dataObject);
  34. }
  35. private async void PasteTextDataObject(object sender, RoutedEventArgs args)
  36. {
  37. ClipboardContent.Text = await Application.Current.Clipboard.GetDataAsync(DataFormats.Text) as string ?? string.Empty;
  38. }
  39. private async void CopyFilesDataObject(object sender, RoutedEventArgs args)
  40. {
  41. var files = ClipboardContent.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
  42. if (files.Length == 0)
  43. {
  44. return;
  45. }
  46. var dataObject = new DataObject();
  47. dataObject.Set(DataFormats.FileNames, files);
  48. await Application.Current.Clipboard.SetDataObjectAsync(dataObject);
  49. }
  50. private async void PasteFilesDataObject(object sender, RoutedEventArgs args)
  51. {
  52. var fiels = await Application.Current.Clipboard.GetDataAsync(DataFormats.FileNames) as IEnumerable<string>;
  53. ClipboardContent.Text = fiels != null ? string.Join(Environment.NewLine, fiels) : string.Empty;
  54. }
  55. private async void GetFormats(object sender, RoutedEventArgs args)
  56. {
  57. var formats = await Application.Current.Clipboard.GetFormatsAsync();
  58. ClipboardContent.Text = string.Join(Environment.NewLine, formats);
  59. }
  60. private async void Clear(object sender, RoutedEventArgs args)
  61. {
  62. await Application.Current.Clipboard.ClearAsync();
  63. }
  64. }
  65. }