CodeZine(コードジン)

特集ページ一覧

Silverlight 4で強化された実行環境

Silverlight 4で作る新しいRIAアプリケーション(5)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (1.2 MB)

目次

 リスト10は、メニューが選択された際に実行されるイベントハンドラです。

 今回は、どのメニューをクリックした場合でも同じイベントハンドラを呼ぶようにし、イベントハンドラ内部で、Tagプロパティの値を元に四角形に設定する色を変更しています。

リスト10 コンテキストメニューのイベントハンドラ(Printing.xaml.cs)
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    var item = (MenuItem)sender;
    switch ((string)item.Tag)
    {
        case "Red":
            dropTarget.Fill = new SolidColorBrush(Colors.Red);
            break;
        case "Blue":
            dropTarget.Fill = new SolidColorBrush(Colors.Blue);
            break;
        case "Green":
            dropTarget.Fill = new SolidColorBrush(Colors.Green);
            break;
        default:
            break;
    }
}

 実行すると、図4のように色を変更するコンテキストメニューが表示されることを確認できます。

クリップボード

 Silverlight 3までのクリップボードを使ったプログラミングは、印刷と同じようにHTML-DOMを利用したJavascriptとの連携で実現されていました。Silverlight 4からは、Unicodeのテキスト限定ですが、印刷などと同じようにSilverlightのみで操作できます。

 クリップボードアクセスの機能を追加します(リスト11:Printing.xaml.cs)。

リスト11 テキストのコピー
/// <summary>
/// テキストファイルの情報を読み込む
/// </summary>
private static ListBoxItem LoadText(FileInfo dropFile)
{
    using (var readStream = dropFile.OpenText())
    {
        var item = new ListBoxItem
        {
            Height = 100,
            Width = 100,
            Content = new TextBlock
            {
                Text = readStream.ReadToEnd(),
            },
        };

        // 左ボタンを押したタイミングでテキストをクリップボードに格納する。
        item.MouseLeftButtonUp += (_s, _e) =>
            {
                var content = (TextBlock)item.Content;
                Clipboard.SetText(content.Text);
                MessageBox.Show(string.Format("クリップボードの中身:{0}", Clipboard.GetText()));
            };
        return item;
    }
}

 この例では、ドロップしたファイルがテキストの場合、マウスの左ボタンがクリックしたタイミングでテキスト情報をクリップボードに格納し、クリップボードの情報をすぐにメッセージボックスで表示します。

 Silverlightでは、セキュリティー面も考慮し、通常、Silverlightでクリップボードを利用する場合、GetTextメソッドやSetTextメソッドを呼び出したタイミングで、図5のダイアログボックスが表示されます。

図5 クリップボードアクセスの承認ダイアログ
図5 クリップボードアクセスの承認ダイアログ

 [いいえ]をクリックしてクリップボードのアクセスを拒否すると、SecurityExceptionの例外が発生します。また、[回答を保存する]チェックボックスをONにした場合、次回以降、そのサイトのクリップボードアクセスでは、図5の承認ダイアログは表示されません。この設定は、Silverlightのプロパティ画面のアクセス許可タブで確認できます。

図6 クリップボードのアクセス許可
図6 クリップボードのアクセス許可.png

まとめ

 今回はSilverlight 4で強化されたスタイルの設定方法や、印刷やクリップボードといった、アプリケーションを作成する上で、ちょっとうれしい新機能に注目して解説しました。

 次回は、Silverlightで標準的な開発手法であるMVVMについて焦点を当てていきます。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Silverlight 4で作る新しいRIAアプリケーション

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5