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ソリューションを開いてみてください。実行イメージはこの通りです。
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() だけですので、実はテキストデータでしか有効ではありません。その点には注意が必要です。
また、切り取りを実際に行うと、下記のようなダイアログボックスが出ます。
クリップボードアクセス時のダイアログボックス
クリップボードはローカルのリソースなので、Webカム同様、使ってよいかどうかを聞かれるわけです。
ただ、一度許可を与えれば、同じアプリケーションの中ではカットもペーストも自由にできます。Webアプリケーションとして使う場合には、このようなダイアログが出てくることは、注意しておいてください。
参考: ブラウザー外実行で“信頼されたアプリケーション”にしておけばこういう問題は回避できます。
以上です。いかがでしょうか?次回も引き続きアプリケーション支援機能につき、ご紹介します。
鈴木 章太郎