Blazor-TextCopy

[删除(380066935@qq.com或微信通知)]

更好的阅读体验请查看原文:https://github.com/CopyText/TextCopy

TextCopy

CopyText/TextCopy: A cross platform package to copy text to and from the clipboard. (github.com)

A cross platform package to copy text to and from the clipboard.


NuGet package

https://nuget.org/packages/TextCopy/


Usage

SetTextAsync


await ClipboardService.SetTextAsync("Text to place in clipboard");

snippet source | anchor


SetText


ClipboardService.SetText("Text to place in clipboard");

snippet source | anchor


GetTextAsync


var text = await ClipboardService.GetTextAsync();

snippet source | anchor


GetText


var text = ClipboardService.GetText();

snippet source | anchor


Clearing The Clipboard


ClipboardService.SetText("");

snippet source | anchor



await ClipboardService.SetTextAsync("");

snippet source | anchor


Instance API

In addition to the above static API, there is an instance API exposed:



Clipboard clipboard = new();

clipboard.SetText("Text to place in clipboard");

snippet source | anchor


Dependency Injection

An instance of Clipboard can be injected into IServiceCollection:



serviceCollection.InjectClipboard();

snippet source | anchor


The instance should be injected by using IClipboard.


There is also a InjectMockClipboard that injects an instance of MockClipboard with all methods stubbed out.


Supported on

Windows with .NET Framework 4.6.1 and up

Windows with .NET Core 2.0 and up

Windows with Mono 5.0 and up

OSX with .NET Core 2.0 and up

OSX with Mono 5.20.1 and up

Linux with .NET Core 2.0 and up

Linux with Mono 5.20.1 and up

Xamarin.Android 9.0 and up

Xamarin.iOS 10.0 and up

Blazor WebAssembly 6.0 and up

Blazor WebAssembly

Due to the dependency on JSInterop the static ClipboardService is not supported on Blazor.


Instead inject an IClipboard:



var builder = WebAssemblyHostBuilder.CreateDefault();

var serviceCollection = builder.Services;

serviceCollection.InjectClipboard();

builder.RootComponents.Add<App>("app");

snippet source | anchor


Then consume it:



public partial class IndexModel :

    ComponentBase

{

    [Inject]

    public IClipboard Clipboard { get; set; }


    public string Content { get; set; }


    public Task CopyTextToClipboard()

    {

        return Clipboard.SetTextAsync(Content);

    }


    public async Task ReadTextFromClipboard()

    {

        Content = await Clipboard.GetTextAsync();

    }

}

snippet source | anchor


Blazor support requires the browser APIs clipboard.readText and clipboard.writeText.


Linux

Linux uses xsel to access the clipboard. As such it needs to be installed and callable.