Schránka
Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). IClipboard Pomocí tohoto rozhraní můžete kopírovat a vkládat text do a ze schránky systému.
Výchozí implementace IClipboard
rozhraní je k dispozici prostřednictvím Clipboard.Default vlastnosti. Rozhraní IClipboard
i Clipboard
třída jsou obsaženy v Microsoft.Maui.ApplicationModel.DataTransfer
oboru názvů.
Tip
Přístup ke schránce musí být proveden v hlavním vlákně uživatelského rozhraní. Další informace o vyvolání metod v hlavním vlákně uživatelského rozhraní naleznete v tématu MainThread.
Použití schránky
Přístup ke schránce je omezený na řetězcová data. Můžete zkontrolovat, jestli schránka obsahuje data, nastavit nebo vymazat data a číst data. Událost ClipboardContentChanged se vyvolá při každé změně dat schránky.
Následující příklad kódu ukazuje použití tlačítka k nastavení dat schránky:
private async void SetClipboardButton_Clicked(object sender, EventArgs e) =>
await Clipboard.Default.SetTextAsync("This text was highlighted in the UI.");
Následující příklad kódu ukazuje použití tlačítka ke čtení dat schránky. Kód nejprve zkontroluje, jestli schránka obsahuje data, přečte tato data a pak pomocí null
hodnoty vymaže SetTextAsync schránku:
private async void ReadClipboardButton_Clicked(object sender, EventArgs e)
{
if (Clipboard.Default.HasText)
{
ClipboardOutputLabel.Text = await Clipboard.Default.GetTextAsync();
await ClearClipboard();
}
else
ClipboardOutputLabel.Text = "Clipboard is empty";
}
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Vymazání schránky
Schránku můžete vymazat předáním null
SetTextAsync metody, jak ukazuje následující příklad kódu:
private async Task ClearClipboard() =>
await Clipboard.Default.SetTextAsync(null);
Detekce změn schránky
Rozhraní IClipboard poskytuje ClipboardContentChanged událost. Při vyvolání této události se obsah schránky změnil. Následující příklad kódu přidá obslužnou rutinu události při načtení stránky obsahu:
private void ContentPage_Loaded(object sender, EventArgs e)
{
Clipboard.Default.ClipboardContentChanged += Clipboard_ClipboardContentChanged;
}
private async void Clipboard_ClipboardContentChanged(object sender, EventArgs e)
{
ClipboardOutputLabel.Text = await Clipboard.Default.GetTextAsync();
}