In Silverlight 4 hat man nun Zugriff auf die Zwischenablage. Im Zuge der Vorbereitung für einen neuen Webcast, habe ich mir das ganze mal angesehen und war positiv überrascht, wie einfach das ist.

Der folgende Code zeigt wie die typischen Copy, Paste und Cut (Kopieren, Einfügen und Ausschneiden) – Befehle für Textboxen implementiert werden können.

 

private void CopyToClipboard()
{
    if (_source.SelectedText.Length > 0)
    {
        Clipboard.SetText(_source.SelectedText);
    }
    else
    {
        Clipboard.SetText(_source.Text);
    }
}

private void CutText()
{
    CopyToClipboard();

    if (_source.SelectedText.Length > 0)
    {
        _source.Text = _source.Text.Remove(_source.SelectionStart, _source.SelectionLength);
    }
    else
    {
        _source.Text = string.Empty;
    }
}

private void PasteText()
{
    if (Clipboard.ContainsText())
    {
        string pasteText = Clipboard.GetText();
        if (_target.SelectedText.Length > 0)
        {
            int insertPosition = _target.SelectionStart;
            string text2change = _target.Text;
            text2change = text2change.Remove(insertPosition, _target.SelectionLength);
            text2change = text2change.Insert(insertPosition, pasteText);
            _target.Text = text2change;
            _target.Select(insertPosition, pasteText.Length);
        }
        else
        {
            _target.Text = pasteText;
        }
    }
}