Udostępnij przez


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 i Uniwersalnej platformy Windows (UWP) przy użyciu API schowka. Dowiesz się, jak kopiować, wycinać i wklejać dane, śledzić zmiany schowka i używać klasy DataPackage do obsługi różnych formatów danych.

Uwaga / Notatka

Te interfejsy API można również używać w innych aplikacjach klasycznych za pośrednictwem interfejsów API środowiska Uruchomieniowego systemu Windows (WinRT). Aby uzyskać więcej informacji, zobacz Wywoływanie interfejsów API środowiska uruchomieniowego systemu Windows w aplikacjach klasycznych.

Aby zapoznać się z kompletnymi przykładami kodu, które przedstawiają różne scenariusze kopiowania i wklejania, zobacz przykład schowka platformy UWP w witrynie GitHub.

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 pakietu DataPackage do schowka przez wywołanie statycznej metody SetContent .

Clipboard.SetContent(dataPackage);

Wklej

Aby pobrać treść schowka, wywołaj statyczną metodę GetContent. Ta metoda zwraca element DataPackageView zawierający 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 , aby pobrać dane.

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