Kopieren und Einfügen

In diesem Artikel wird erläutert, wie in Apps für die universelle Windows-Plattform (UWP) das Kopieren und Einfügen über die Zwischenablage unterstützt wird. Kopieren und Einfügen ist die klassische Methode zum Austausch von Daten zwischen Apps oder in einer App, und nahezu jede App kann Zwischenablageaktionen bis zu einem gewissen Grad unterstützen. Vollständige Codebeispiele, die verschiedene Kopier- und Einfügeszenarien veranschaulichen, finden Sie im Zwischenablagebeispiel.

Überprüfen der integrierten Unterstützung für die Zwischenablage

In vielen Fällen müssen Sie keinen Code für die Unterstützung von Zwischenablageaktionen schreiben. Viele der Standard-XAML-Steuerelemente, die Sie beim Erstellen Ihrer Apps verwenden können, unterstützen bereits Zwischenablageaktionen.

Vorbereiten

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 vom Benutzer kopierten Daten als auch alle Eigenschaften (z. B. eine Beschreibung), die Sie einfügen möchten.

DataPackage dataPackage = new DataPackage();

Kopieren und Ausschneiden

Kopieren und Ausschneiden (auch als Verschieben bezeichnet) funktionieren nahezu identisch. 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

Anschließend können Sie die vom Benutzer ausgewählten Daten in das DataPackage-Objekt einfügen. 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 Text mithilfe der SetText-Methode hinzu:

dataPackage.SetText("Hello World!");

Im letzten Schritt wird das DataPackage-Objekt durch Aufrufen der statischen SetContent-Methode zur Zwischenablage hinzugefügt.

Clipboard.SetContent(dataPackage);

Einfügen

Rufen Sie zum Abrufen des Inhalts der Zwischenablage die statische GetContent-Methode auf. Die Methode gibt eine DataPackageView mit dem Inhalt zurück. Dieses Objekt ist fast identisch mit einem DataPackage-Objekt , mit der Ausnahme, dass der Inhalt schreibgeschützt ist. Anhand dieses Objekts können Sie dann entweder mit der AvailableFormats-Methode oder mit der Contains-Methode ermitteln, welche Formate verfügbar sind. Rufen Sie anschließend die entsprechende DataPackageView-Methode auf, um die Daten zu erhalten.

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 empfiehlt es sich unter Umständen, auch Änderungen an der Zwischenablage nachzuverfolgen. Behandeln Sie dafür 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;
    }
}

Siehe auch