2010年06月14日

MMLとコンテキストメニュー

Silverlight4Toolsの日本語版が公開されたのでコンテキストメニューを試してみた。
素の状態だと右クリックのイベントから自力でメニューを描画してやらないとダメなので
Silverlight4ToolkitのContextMenuを使う。
コンテキストメニューのテストの為に作ったアプリは、MMLで音楽を作れるSlMMLという
FlMMLをSilverlight向けに移植したライブラリを使った音楽プレイヤーです。
Microsoft Silverlight を入手

FlMMLはニコニコのピコカキコなどに使われていてレトロゲーム向けの音楽を得意としてます。
ゲームを作る場合に音関係のデータはファイルサイズが大きくなりがちなので、
テキストファイルで作れるMMLならファイルサイズが小さく済むから好都合だと思います。


                
                    
                        
                            
                            
                            
                        
                    
                

コンテキストメニューのXAMLです。
こんな感じでRichTextBoxの中にContextMenuを入れています。


        private void cut_Click(object sender, RoutedEventArgs e)
        {
            if (richTextBox1.Selection.Text.Length > 0)
                Clipboard.SetText(richTextBox1.Selection.Text);

            richTextBox1.Selection.Text = String.Empty;
        }

        private void copy_Click(object sender, RoutedEventArgs e)
        {
            if (richTextBox1.Selection.Text.Length > 0)
                Clipboard.SetText(richTextBox1.Selection.Text);
        }

        private void paste_Click(object sender, RoutedEventArgs e)
        {
            if (Clipboard.ContainsText())
                richTextBox1.Selection.Text = Clipboard.GetText();
        }

コンテキストメニューで呼ばれるC#のコードです。
こんな感じでRichTextBoxとClipboardをやり取りして処理してます。

今回のアプリを作ってみて見つかった問題点は
コンテキストメニューを表示させるとテキスト選択が非表示になってしまう。
Silverlight標準のコンテキストメニューとオリジナルのメニューをミックス出来無い。
RichTextBoxのテキストのみを取得する方法が不明。^^;

テキスト選択が非表示になるというのはMSDNにあるサンプルのテキストエディタでは
問題なかったのでなにかしら方法があるのだと思う。
RichTextBoxのテキストのみを取得する方法はWPFでの方法はわかったのだけど
Silverlightだと同じやり方が出来無いので、テキストを全選択してから
richTextBox1.Selection.Textで取りだすという方法でやってます。><
posted by Rael at 19:39| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/153258620

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。