SHOEISHA iD

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

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

Infragistics NetAdvantageチュートリアル(AD)

Office 2007のリボンを持った
WPFアプリケーション/Webページを作る

NetAdvantage for WPFのxamRibbonコントロールを使ったWPFアプリケーションの作成

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

ボタンのイベント処理

 イベント処理は、ボタンに設定したイベントハンドラを、コードページに作成します。

 そして、イベントハンドラの引数から押されたボタンのIDを取得し、TextBlockの各プロパティを操作します。

コードの先頭で、名前空間「Infragistics.Windows.Ribbon」への参照を必ず記述してください。

VB
Imports Infragistics.Windows.Ribbon
Class Window1
    Private Sub OnButtonToolClick(ByVal sender As System.Object, _
      ByVal e As System.Windows.RoutedEventArgs)
        Dim bt As ButtonTool = DirectCast(e.OriginalSource, ButtonTool)

        Select Case bt.Id
            Case "btnBold"
                results.FontWeight = FontWeights.UltraBold
                Exit Select
            Case "btnItalic"
                results.FontStyle = FontStyles.Italic
                Exit Select
            Case "btnnormal"
                results.FontStyle = FontStyles.Normal
                results.FontWeight = FontWeights.Normal
                Exit Select
        End Select
    End Sub
C#
using Infragistics.Windows.Ribbon;

namespace Wpfribbon_cs
{
    /// <summary>
    /// Window1.xaml の相互作用ロジック
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void OnButtonToolClick(object sender, RoutedEventArgs e)
        {
            ButtonTool bt = (ButtonTool)e.OriginalSource;
                        
            switch (bt.Id)
            {
                case "btnBold":
                     results.FontWeight = FontWeights.UltraBold;
                    break;
                case "btnItalic":
                    results.FontStyle = FontStyles.Italic;
                    break;
                case "btnnormal":
                    results.FontStyle = FontStyles.Normal;
                        results.FontWeight = FontWeights.Normal;
                    break;
            }
        }
    }
}

コードからリボンを作成する

 VBまたはC#のコードからリボンを作成する場合も、xamlと同様に「タブ」「リボングループ」「ボタングループ」「ボタン」の順序でオブジェクトを作成し、Captionプロパティでボタンの文字を設定し、Idプロパティに識別用のIDを設定します。

 ボタンにイメージを使いたい場合は、BitmapImageオブジェクトを作成しSmallImageプロパティに設定します。BitmapImageクラスのコンストラクタの引数に、イメージファイルのある場所をUrlで指定します。ローカルフォルダでもWebのUrlでもかまいません。

VB
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    'タブの作成
    Dim tab As RibbonTabItem

    tab = New RibbonTabItem()
    tab.Header = "編集"
    tab.Name = "tabedit"

    Me.XamRibbon1.Tabs.Add(tab)

    'リボングループの作成
    Dim group As RibbonGroup
    group = New RibbonGroup()
    group.Caption = "編集"
    group.Id = "grpedit"
    tab.RibbonGroups.Add(group)

    'ボタングループの作成
    Dim buttonGroup1 As New ButtonGroup()
    group.Items.Add(buttonGroup1)

    'ボタンの作成
    Dim btncut As New ButtonTool()
    btncut.Id = "btncut"
    'btncut.SmallImage = New BitmapImage(New Uri("J:\_GENKOU\インフラジスティックス\Wpfribbon\Wpfribbon_vb\CutHS.png"))
    btncut.SmallImage = New BitmapImage(New Uri("http://www.big.or.jp/~seto/CutHS.png"))
    buttonGroup1.Children.Add(btncut)

    Dim btncopy As New ButtonTool()
    btncopy.Id = "btncopy"
    btncopy.Caption = "コピー"
    buttonGroup1.Children.Add(btncopy)

    Dim btnpaste As New ButtonTool()
    btnpaste.Id = "btnCenter"
    btnpaste.Caption = "貼り付け"
    buttonGroup1.Children.Add(btnpaste)
End Sub
C#
public Window1()
{
    InitializeComponent();
    //タブの作成
    RibbonTabItem tab;

    tab = new RibbonTabItem();
    tab.Header = "編集";
    tab.Name = "tabedit";
    XamRibbon1.Tabs.Add(tab);

    //リボングループの作成
    RibbonGroup group;
    group = new RibbonGroup();
    group.Caption = "編集";
    group.Id = "grpedit";
    tab.RibbonGroups.Add(group);

    //ボタングループの作成
    ButtonGroup buttonGroup1 = new ButtonGroup();
    group.Items.Add(buttonGroup1);

    //ボタンの作成
    ButtonTool btncut = new ButtonTool();
    btncut.Id = "btncut";
    //btncut.SmallImage = new BitmapImage(new Uri("J:\_GENKOU\インフラジスティックス\Wpfribbon\Wpfribbon_vb\CutHS.png"));
    btncut.SmallImage = new BitmapImage(new Uri("http://www.big.or.jp/~seto/CutHS.png"));
    buttonGroup1.Children.Add(btncut);

    ButtonTool btncopy = new ButtonTool();
    btncopy.Id = "btncopy";
    btncopy.Caption = "コピー";
    buttonGroup1.Children.Add(btncopy);

    ButtonTool btnpaste = new ButtonTool();
    btnpaste.Id = "btnCenter";
    btnpaste.Caption = "貼り付け";
    buttonGroup1.Children.Add(btnpaste);
}

Webページ-WPFブラウザアプリケーションの作成

 WPFブラウザアプリケーションも、WPFアプリケーションと同じ方法でプログラムを組むことができます。

 しかも、本記事の「はじめに」でも述べましたが、NetAdvantage for WPFのすごいところはアプリケーション作成に使用したコードを、機能によってはそのままWebページ作成のコードに使える点です。

 ですから、一度WPFアプリケーションを作成すれば、WPFブラウザアプリケーション用プロジェクトを作成し、そこにそのままコードをコピーするだけでWPFブラウザアプリケーションが作れてしまいます。

 xamlはもちろんのこと、VBやC#のコードもそのまま使用できます。ですから、WPFアプリケーションをWebアプリケーションに移行しようとした場合、かなり少ない工数で移行作業を進めることができます。

まとめ

 今回は、リボンにボタンを組み込み、テキストの属性を変える簡単な処理しか組み込みませんでしたが、アプリケーションにリボンを組み込んで使う作業を体験できたことと思います。

 xamRibbonコントロールには、まだまだいろいろな機能を持ったコントロールを組み込んで使うことができますので、まさにOffice 2007アプリケーションのリボンと同等の機能をアプリケーションに持たせることができると言えます。

 しかも、Webページにもリボンが使えますから、その用途は相当幅広いものになるのではないでしょうか。

よりOffice 2007の外観に近いアプリケーションの作成

 xamRibbonアセンブリを利用すると、ウィンドウのタイトルバーとアプリケーションメニュー(左上の丸いアイコン)が同化したウィンドウ「XamRibbonWindow」を作成することもできます。こちらはWPFアプリケーションでしか利用できませんが、Office 2007アプリケーションと、より表示の互換性が高いアプリケーションを作成できます。

 詳細については、VS統合ヘルプの「ms-help://INFRAGISTICS_WPFJP81_HELP/NetAdvantage_WPFJP81/NAWPF_WPFJP81/WPF/xamRibbon_Display_xamRibbon_in_the_Ribbon_Window.html」、または[NetAdvantage for WPF Help]-[開発者ガイド]-[コントロール]-[xamRibbon]-[xamRibbonの使用]-[リボンウィンドウ]-[リボンウィンドウにXamRibbonを表示]を参照してください。

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

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3254 2008/11/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング