SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード 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について焦点を当てていきます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight 4で作る新しいRIAアプリケーション連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5682 2011/01/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング