Udostępnij za pośrednictwem


Kopiowanie i wklejanie

Kopiowanie i wklejanie to podstawowy sposób wymiany danych między aplikacjami lub w aplikacji. W tym artykule pokazano, jak zaimplementować kopiowanie i wklejanie w aplikacjach WinUI przy użyciu interfejsów API schowka. Dowiesz się, jak kopiować, wycinać i wklejać dane, jak śledzić zmiany schowka i używać klasy DataPackage do obsługi różnych formatów danych.

Uwaga / Notatka

Można również używać tych interfejsów API w innych aplikacjach desktopowych za pośrednictwem interfejsów API Windows Runtime (WinRT). Aby uzyskać więcej informacji, zobacz wywoływanie interfejsów API Windows Runtime w aplikacjach klasycznych.

Sprawdź, czy jest obsługa wbudowanego schowka

W wielu przypadkach nie trzeba pisać kodu w celu obsługi operacji schowka. Wiele domyślnych kontrolek XAML, których można używać do tworzenia aplikacji, już obsługuje operacje schowka.

Rozpocznij konfigurację

Najpierw uwzględnij przestrzeń nazw Windows.ApplicationModel.DataTransfer w aplikacji. Następnie dodaj wystąpienie obiektu DataPackage. Ten obiekt zawiera zarówno dane, które użytkownik chce skopiować, jak i wszelkie właściwości (takie jak opis), które chcesz uwzględnić.

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

Kopiowanie i wycinanie

Kopiowanie i wycinanie (nazywane również przenoszeniem) działa prawie dokładnie tak samo. Wybierz żądaną operację przy użyciu właściwości RequestedOperation .

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

Ustaw skopiowaną zawartość

Następnie możesz dodać dane wybrane przez użytkownika do obiektu DataPackage. Jeśli te dane są obsługiwane przez klasę DataPackage , możesz użyć jednej z odpowiednich metod obiektu DataPackage . Poniżej przedstawiono sposób dodawania tekstu przy użyciu metody SetText :

dataPackage.SetText("Hello World!");

Ostatnim krokiem jest dodanie DataPackage do schowka przez wywołanie metody static SetContent.

Clipboard.SetContent(dataPackage);

Wklej

Aby pobrać treść schowka, wywołaj statyczną metodę GetContent. Ta metoda zwraca DataPackageView który zawiera zawartość. Ten obiekt jest prawie identyczny z obiektem DataPackage z tą różnicą, że jego zawartość jest tylko do odczytu. Za pomocą tego obiektu można użyć metody AvailableFormats lub Contains, aby zidentyfikować dostępne formaty. Następnie możesz wywołać odpowiednią metodę DataPackageView w celu pobrania danych.

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;
    }
}

Śledź zmiany w schowku

Oprócz kopiowania i wklejania poleceń możesz również śledzić zmiany schowka. Zrób to, obsługując zdarzenie ContentChanged schowka.

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;
    }
}