복사 및 붙여넣기

이 문서에서는 클립보드를 사용하여 UWP(유니버설 Windows 플랫폼) 앱에서 복사 및 붙여넣기를 지원하는 방법을 설명합니다. 복사하여 붙여넣기는 앱 간 또는 앱 내에서 데이터를 교환하는 일반적인 방법이며 거의 모든 앱이 어느 정도 클립보드 작업을 지원할 수 있습니다. 여러 가지 복사 및 붙여넣기 시나리오를 보여 주는 전체 코드 예제는 클립보드 샘플을 참조하세요.

기본 제공 클립보드 지원 확인

대부분의 경우 클립보드 작업을 지원하기 위해 코드를 작성할 필요가 없습니다. 앱을 만드는 데 사용할 수 있는 대부분의 기본 XAML 컨트롤은 이미 클립보드 작업을 지원합니다.

설정

먼저 앱에 Windows.ApplicationModel.DataTransfer 네임스페이스를 포함합니다. 그런 다음 DataPackage 개체의 인스턴스를 추가합니다. 이 개체에는 사용자가 복사하려는 데이터와 포함하려는 속성(예: 설명)이 모두 포함됩니다.

DataPackage dataPackage = new DataPackage();

복사 및 잘라내기

복사 및 잘라내기(이동이라고도 함)는 거의 동일하게 작동합니다. RequestedOperation 속성을 사용하여 원하는 작업을 선택합니다.

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

복사한 콘텐츠 설정

다음으로 사용자가 선택한 데이터를 DataPackage 개체에 추가할 수 있습니다. DataPackage 클래스에서 이 데이터를 지원하는 경우 DataPackage 개체에서 해당 방법 중 하나를 사용할 수 있습니다. SetText 메서드를 사용하여 텍스트를 추가하는 방법은 다음과 같습니다.

dataPackage.SetText("Hello World!");

마지막 단계는 정적 SetContent 메서드를 호출하여 DataPackage를 클립보드에 추가하는 것입니다.

Clipboard.SetContent(dataPackage);

붙여넣기

클립보드의 내용을 얻으려면 정적 GetContent 메서드를 호출합니다. 이 메서드는 콘텐츠가 포함된 DataPackageView를 반환합니다. 이 개체는 내용이 읽기 전용이라는 점을 제외하고 DataPackage 개체와 거의 동일합니다. 해당 개체를 사용하면 AvailableFormats 또는 Contains 메서드를 사용하여 사용 가능한 형식을 식별할 수 있습니다. 그런 다음 해당 DataPackageView 메서드를 호출하여 데이터를 가져올 수 있습니다.

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

클립보드 변경 내용 추적

명령 복사 및 붙여넣기 외에도 클립보드 변경 내용을 추적할 수도 있습니다. 클립보드의 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;
    }
}

참고 항목