Sdílet prostřednictvím


Kopírování a vkládání

Kopírování a vkládání je základním způsobem, jak uživatelé vyměňovat data mezi aplikacemi nebo v rámci aplikace. V tomto článku se dozvíte, jak implementovat kopírování a vkládání v aplikacích WinUI pomocí API schránky. Naučíte se, jak kopírovat, vyjmout a vložit data, jak sledovat změny schránky a jak používat třídu DataPackage ke zpracování různých formátů dat.

Poznámka:

Tato rozhraní API můžete také použít v jiných desktopových aplikacích prostřednictvím rozhraní API Windows Runtime (WinRT). Další informace najdete v tématu Call Windows Runtime API v desktopových aplikacích.

Kontrola podpory integrované schránky

V mnoha případech nemusíte psát kód pro podporu operací schránky. Mnoho výchozích ovládacích prvků XAML, které můžete použít k vytváření aplikací, již podporuje operace schránky.

Nastavte se

Nejprve zahrňte Windows.ApplicationModel.DataTransfer obor názvů ve vaší aplikaci. Pak přidejte instanci objektu DataPackage. Tento objekt obsahuje data, která chce uživatel zkopírovat, i všechny vlastnosti (například popis), které chcete zahrnout.

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

Kopírovat a vyjmout

Kopírování a vyjmutí (označované také jako přesunutí) funguje téměř stejně. Zvolte požadovanou operaci pomocí Vlastnosti RequestedOperation .

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

Nastavení zkopírovaného obsahu

Dále můžete přidat data, která uživatel vybral, do objektu DataPackage. Pokud jsou tato data podporována DataPackage třídy, můžete použít jednu z odpovídajících metodDataPackage objektu. Tady je postup přidání textu pomocí metody SetText :

dataPackage.SetText("Hello World!");

Posledním krokem je přidání DataPackage do schránky voláním metody static SetContent.

Clipboard.SetContent(dataPackage);

Vložit

Pokud chcete získat obsah schránky, zavolejte statickou metodu GetContent . Tato metoda vrátí DataPackageView obsahující obsah. Tento objekt je téměř stejný jako objekt DataPackage s tím rozdílem, že jeho obsah je jen pro čtení. S tímto objektem můžete použít Buď AvailableFormats nebo Contains metoda identifikovat, jaké formáty jsou k dispozici. Potom můžete volat odpovídající metodu DataPackageView pro získání dat.

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

Sledujte změny ve schránce

Kromě kopírování a vkládání příkazů můžete také chtít sledovat změny schránky. Udělejte to zpracováním události ContentChanged schránky.

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