Freigeben über


Kopieren und einfügen

Kopieren und Einfügen ist eine grundlegende Möglichkeit, um Benutzer Daten zwischen Apps oder innerhalb einer App auszutauschen. In diesem Artikel erfahren Sie, wie Sie Mithilfe der Zwischenablage-APIs Kopieren und Einfügen in WinUI- und UWP-Apps (Universelle Windows-Plattform) implementieren. Sie erfahren, wie Sie Daten kopieren, ausschneiden und einfügen, Zwischenablageänderungen nachverfolgen und die DataPackage-Klasse verwenden, um verschiedene Datenformate zu verarbeiten.

Hinweis

Sie können diese APIs auch in anderen Desktop-Apps über Windows-Runtime-APIs (WinRT) verwenden. Weitere Informationen finden Sie unter Aufrufen von Windows-Runtime-APIs in Desktop-Apps.

Vollständige Codebeispiele, die verschiedene Kopier- und Einfügeszenarien veranschaulichen, finden Sie im Beispiel für die UWP-Zwischenablage auf GitHub.

Überprüfen Sie die integrierte Zwischenablagenunterstützung

In vielen Fällen müssen Sie keinen Code schreiben, um Zwischenablagevorgänge zu unterstützen. Viele der standardmäßigen XAML-Steuerelemente, die Sie zum Erstellen von Apps verwenden können, unterstützen bereits Zwischenablagevorgänge.

Loslegen

Schließen Sie zunächst den Windows.ApplicationModel.DataTransfer-Namespace in Ihre App ein. Fügen Sie dann eine Instanz des DataPackage-Objekts hinzu. Dieses Objekt enthält sowohl die Daten, die der Benutzer kopieren möchte, als auch alle Eigenschaften (z. B. eine Beschreibung), die Sie einbeziehen möchten.

using Windows.ApplicationModel.DataTransfer;
...
var dataPackage = new DataPackage();

Kopieren und Ausschneiden

Kopieren und Ausschneiden (auch als "Verschieben" bezeichnet) funktionieren fast genauso. Wählen Sie mit der RequestedOperation-Eigenschaft den gewünschten Vorgang aus.

// copy 
dataPackage.RequestedOperation = DataPackageOperation.Copy;
// or cut
dataPackage.RequestedOperation = DataPackageOperation.Move;

Festlegen des kopierten Inhalts

Als Nächstes können Sie die Daten hinzufügen, die ein Benutzer dem DataPackage-Objekt ausgewählt hat. Wenn diese Daten von der DataPackage-Klasse unterstützt werden, können Sie eine der entsprechenden Methoden des DataPackage-Objekts verwenden. So fügen Sie Mithilfe der SetText-Methode Text hinzu:

dataPackage.SetText("Hello World!");

Der letzte Schritt besteht darin, das DataPackage der Zwischenablage hinzuzufügen, indem die statische SetContent-Methode aufgerufen wird.

Clipboard.SetContent(dataPackage);

Einfügen

Rufen Sie zum Abrufen des Inhalts der Zwischenablage die statische GetContent-Methode auf. Diese Methode gibt ein DataPackageView-Objekt zurück, das den Inhalt enthält. Dieses Objekt ist fast identisch mit einem DataPackage-Objekt, außer dass der Inhalt nur-lesbar ist. Mit diesem Objekt können Sie entweder die AvailableFormats oder die Contains-Methode verwenden, um zu ermitteln, welche Formate verfügbar sind. Anschließend können Sie die entsprechende DataPackageView-Methode aufrufen, um die Daten abzurufen.

async void OutputClipboardText()
{
    DataPackageView dataPackageView = Clipboard.GetContent();
    if (dataPackageView.Contains(StandardDataFormats.Text))
    {
        string text = await dataPackageView.GetTextAsync();
        // To output the text from this example, you need a TextBlock control
        TextOutput.Text = "Clipboard now contains: " + text;
    }
}

Nachverfolgen von Änderungen an der Zwischenablage

Zusätzlich zu den Befehlen zum Kopieren und Einfügen möchten Sie möglicherweise auch Änderungen der Zwischenablage nachverfolgen. Behandeln Sie dazu das ContentChanged-Ereignis der Zwischenablage.

Clipboard.ContentChanged += async (s, e) => 
{
    DataPackageView dataPackageView = Clipboard.GetContent();
    if (dataPackageView.Contains(StandardDataFormats.Text))
    {
        string text = await dataPackageView.GetTextAsync();
        // To output the text from this example, you need a TextBlock control
        TextOutput.Text = "Clipboard now contains: " + text;
    }
}