Silverlight 4におけるアプリケーション要件への挑戦 – Copy & Paste

皆様、おはようございます。今回から、Silverlight 4におけるSilverlight 4のアプリケーション支援機能についてみていきます。

Silverlight 4は、より操作性が高く、直観的に活用可能なアプリケーションの構築を支援します。業務アプリケーションで当然備えるべき機能として考えられているものには、多くのものがあります。

具体的には、印刷機能リッチテキストボックスクリップボード利用、ドラッグ & ドロップ対応等があります。そして最適なマウスオペレーションも必要で、具体的には、 右クリックメニューマウスホイールへの対応、といった内容です。それらを容易に実現できるからこそVisual Basic及びWindows Formが広く使われてきたわけです。

Silverlight 4 は、Visual Basic及びWindows Formが備えている機能を可及的に取り込むことにより、業務アプリケーションのプラットフォームとしての適格性を明確に打ち出しました。

柔軟なUI実現

Silverlight 4は、コントロールの状態 (ロード前、ロード時、ロード後) によって、コンテンツのコンテキストに則した UI のアニメーションを実現します。さらに柔軟で直感的な体験の提供が可能になります。

コピー& ペースト

プログラミングによってクリップボードにアクセスする手法を提供するため、コピー、カット、ペーストといった操作及びデータの書式設定や、編集なども可能です

まずはクリップボード利用を見ていきましょう。Silverlight Training Kitの中の、RichTextBoxソリューションを開いてみてください。実行イメージはこの通りです。

image

RichTextBoxソリューション実行イメージ

場所は、普通にSilverlight 4 Training Kitをインストールすると、C:\Silverlight4\Labs\RichTextBox\Source\Ex02\Endです。処理は下記の通りです。

コピー、カット、ペーストの実装

 <MainPage.xaml.cs>
private void btnCopy_Click(object sender, RoutedEventArgs e)
{
    Clipboard.SetText(rtb.Selection.Text);    //オブジェクトからのコピー
    ReturnFocus();
}
private void btnPaste_Click(object sender, RoutedEventArgs e)
{
    rtb.Selection.Text = Clipboard.GetText();    //オブジェクトへのペースト
    ReturnFocus();
}
private void btnCut_Click(object sender, RoutedEventArgs e)
{
    Clipboard.SetText(rtb.Selection.Text); //切り取り
    rtb.Selection.Text = "";          //の実装
    ReturnFocus();
}

このように、SilverlightではクリップボードのAPIがあり、クリップボードが使えるようになりました。但し、メソッドはここにあるSetText()GetText() だけですので、実はテキストデータでしか有効ではありません。その点には注意が必要です。

また、切り取りを実際に行うと、下記のようなダイアログボックスが出ます。

image

クリップボードアクセス時のダイアログボックス

クリップボードはローカルのリソースなので、Webカム同様、使ってよいかどうかを聞かれるわけです。

ただ、一度許可を与えれば、同じアプリケーションの中ではカットもペーストも自由にできます。Webアプリケーションとして使う場合には、このようなダイアログが出てくることは、注意しておいてください。

参考: ブラウザー外実行で“信頼されたアプリケーション”にしておけばこういう問題は回避できます。

以上です。いかがでしょうか?次回も引き続きアプリケーション支援機能につき、ご紹介します。

鈴木 章太郎