Copy & Paste mit Silverlight 4

In den Eingabefeldern einer Silverlight Anwendung lässt sich Copy and Paste ganz einfach über die bekannten Tastenkombinationen verwenden.

Tastenkombination Bedeutung
Strg+A Gesamten Text markieren
Strg+X Markierten Text ausschneiden
Strg+C Markierten Text kopieren
Strg+V Text einfügen

Seit Silverlight 4 besteht nun zusätzlich die Möglichkeit mittels statischer Methoden der statischen Klasse Clipboard im Namesraum System.Windows in Silverlight-Anwendungen auch programmatisch auf die Zwischenablage zuzugreifen.

Da dies eine sicherheitskritische Aktion ist, erhält der Benutzer einen entsprechenden Hinweis darauf und muss entscheiden ob er das zulassen möchte oder nicht.

Entscheidet sich ein Benutzer gegen den Zugriff auf die Zwischenablage, wird eine SecurityException (Namensraum System.Security) geworfen – diese sollte man in seinem Code auch möglichst behandeln, damit die Anwendung nicht einfach beendet wird.

Beim Betätigen der Tastenkombinationen zum Einfügen, Ausschneiden oder Kopieren hat man dieses Problem nicht, denn diese Aktionen werden ja vom Benutzer initiiert und sind demnach in Ordnung. Beim programmatischen Zugriff hingegen, könnte ohne den obigen Hinweis an den Benutzer, ein böswilliges Programm z.B. Informationen aus den Eingabefeldern rauskopieren, ohne dass der Benutzer davon etwas mitbekommt. Aus diesem Grund sollte man sich genau überlegen, ob man in seiner Anwendung unbedingt per Programmcode auf die Zwischenablage zugreifen muss.

Hinzu kommt, dass bei den Vorgängen zum Umgang mit der Zwischenablage auch einiges an Zusatzarbeit auf den Entwickler zukommt – die Standard-Tastenkombinationen funktionieren hingegen ohne weiteres Zutun. In dem unten aufgeführten Quellcode habe ich es mir einfach gemacht und berücksichtige nur ein einziges Eingabefeld (tbName). Dazu habe ich drei Schalter angelegt, die jeweils den Text aus dem Eingabefeld ausschneiden oder kopieren bzw. in das Eingabefeld einfügen. Möchte man diese Aktionen für mehrere Eingabefelder verwenden ist natürlich zusätzliche Logik erforderlich.

Hinterlasse einen Kommentar