Salin dan tempel

Salin dan tempel adalah cara mendasar bagi pengguna untuk bertukar data antara aplikasi atau dalam aplikasi. Artikel ini memperlihatkan kepada Anda cara menerapkan salin dan tempel di aplikasi WinUI menggunakan API clipboard. Anda akan mempelajari cara menyalin, memotong, dan menempelkan data, melacak perubahan clipboard, dan menggunakan kelas DataPackage untuk menangani format data yang berbeda.

Nota

Anda juga dapat menggunakan API ini di aplikasi desktop lain melalui API Windows Runtime (WinRT). Untuk informasi selengkapnya, lihat API Call Windows Runtime di aplikasi desktop.

Periksa dukungan clipboard bawaan

Dalam banyak kasus, Anda tidak perlu menulis kode untuk mendukung operasi clipboard. Banyak kontrol XAML default yang dapat Anda gunakan untuk membuat aplikasi yang sudah mendukung operasi clipboard.

Bersiap

Pertama, sertakan Windows. ApplicationModel.DataTransfer namespace di aplikasi Anda. Kemudian, tambahkan instans objek DataPackage. Objek ini berisi data yang ingin disalin pengguna dan properti apa pun (seperti deskripsi) yang ingin Anda sertakan.

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

Salin dan potong

Salin dan potong (juga disebut sebagai pemindahan) bekerja hampir sama persis. Pilih operasi mana yang Anda inginkan dengan menggunakan properti RequestedOperation .

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

Mengatur konten yang disalin

Selanjutnya, Anda dapat menambahkan data yang telah dipilih pengguna ke objek DataPackage. Jika data ini didukung oleh kelas DataPackage , Anda dapat menggunakan salah satu metode yang sesuai dari objek DataPackage . Berikut cara menambahkan teks dengan menggunakan metode SetText :

dataPackage.SetText("Hello World!");

Langkah terakhir adalah menambahkan DataPackage ke clipboard dengan memanggil metode SetContent statis.

Clipboard.SetContent(dataPackage);

Pasta

Untuk mendapatkan konten clipboard, panggil metode GetContent statis. Metode ini mengembalikan DataPackageView yang berisi konten. Objek ini hampir identik dengan objek DataPackage, kecuali bahwa kontennya bersifat baca-saja. Dengan objek tersebut, Anda dapat menggunakan AvailableFormats atau metode Contains untuk mengidentifikasi format apa yang tersedia. Kemudian, Anda dapat memanggil metode DataPackageView yang sesuai untuk mendapatkan data.

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

Lacak perubahan pada clipboard

Selain perintah salin dan tempel, Anda mungkin juga ingin melacak perubahan clipboard. Lakukan ini dengan menangani peristiwa clipboard ContentChanged.

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