SHOEISHA iD

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

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

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

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

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

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

 NetAdvantage for WPFのxamRibbonコントロールを利用すると、このリボンを自作のアプリケーションやWebページに組み込むことができます。今回は、このコントロールで、リボンを持ったアプリケーションとWebページを作成してみます。

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

はじめに

 アプリケーションやWebページで、Office 2007で使われている最新GUIの「リボン」が使えるようになると、アプリケーションの外観もぐっとスタイリッシュになりますね。

 NetAdvantage for WPFのxamRibbonコントロールを利用すると、このリボンを自作のアプリケーションやWebページに組み込むことができます。今回は、このコントロールで、リボンを持ったアプリケーションとWebページを作成してみました。アプリケーションの機能は、ボタンを押すと表示してある文字のスタイルが変わるシンプルなものです。

Windowsアプリケーションにリボンを組み込む
Windowsアプリケーションにリボンを組み込む
Webページにもリボンを組み込むことができる
Webページにもリボンを組み込むことができる

 本記事は、WPF(Windows Presentation Foundation)およびXAMLに対する基礎的な知識についての解説は省略しています。これらに対する知識をお持ちでない方は、事前に情報を把握しておくことをお勧めします。

対象読者

 Visual Basic 2008、Visual C# 2008を使ってプログラムを作ったことのある人。

必要な環境

 Visual Basic 2008 または Visual C# 2008でプログラムが作れる環境。WPFアプリケーション、WPF Webアプリケーションが作れる環境が必須なので、Express Editionは利用できません。

 なお、本プログラムはWindows Vista上で動作するVisual Studio 2008を使用して作成し、Windows Vistaにて動作確認を行っています。

プログラム実行時の注意事項

1. Windowsアプリケーションの場合

 アプリケーションを正常に動作させるためには、次のファイルを実行可能ファイルと同じフォルダにインストールする必要があります。

アプリケーションの実行に必要なDLLファイル
ファイル名 説明
Infragistics3.Wpf.v8.1.dll Infragistics アセンブリによって使用される機能を含む Infragistics Windows Presentation Foundation Assembly。
Infragistics3.Wpf.Ribbon.v8.1.dll
Infragistics3.Wpf.Ribbon.v8.1.resources.dll
xamRibbon コントロールを含む NetAdvantage for Windows Presentation Foundation Assembly。
Infragistics3.Wpf.Editors.v8.1.dll
Infragistics3.Wpf.Editors.v8.1.resources.dll
xamEditor コントロールを含む NetAdvantage for Windows Presentation Foundation Assembly。

 これらのファイルを、プログラムを実行する「Bin」フォルダに格納します。

2. Webアプリケーションの場合

 ダウンロードした「wpfribbonBrowser_bin.zip」を解凍します。解凍したファイルは、フォルダ構成を変えないでください。そのまま、フォルダ内の「WpfribbonBrowser.xbap」ファイルをマウスでダブルクリックします。Webブラウザが起動し、Webアプリケーションが表示されます。

 なお、 いずれの場合も.NET Framework 3.0から追加されたクラスやメンバを使用しているので、.NET Framework 3.0がインストールされていることが必須条件です。

コンポーネントのインストール

 初めてVisual StudioでNetAdvantage for WPFを使用する方は、お使いのコンピュータにNetAdvantage for WPFをインストールする必要があります。

 インストーラは、インフラジスティックス社のWebページからダウンロードできますので、ここから入手してインストールしてください。製品ページの[NetAdvantage for WPF 2008.1 Full]をクリックします(お試し版のインストールには、アカウント登録が必要です)。

 ファイルはZIP形式で圧縮されています。有償のコンポーネントですが、プロダクトキーを入力せずにインストールすることで、お試し版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

NetAdvantage for WPFについて

 NetAdvantage for WPF は、WPFをベースに、洗練された商用のユーザーインターフェイスを作成するために設計された、インフラジスティックス社の次世代コントロールスイートです。

 NetAdvantage for WPFには、グリッド、エディタ、カルーセルパネル、カルーセルリストボックス、リボン、チャートなど、多彩な機能を持ったコントロールが含まれ、WPFが持つ高解像度のグラフィックス、豊富なスタイリングおよびアニメーション機能などを利用して作られています。

 NetAdvantage for WPFを使うと、次のようなプログラムを作成することができます。

  1. エンタープライズ用途にも耐えうるWindows環境用アプリケーション
  2. WebベースのアプリケーションのためのXBAPアプリケーション
  3. テーマパックを使用する完全にスタイリングされたアプリケーション
  4. 企業のデザイン標準を実行するためのカスタムのスタイルパック

 開発言語は、Visual Basic、Visual C#に加え、XAMLを使うことができます。

xamRibbonコントロールについて

 xamRibbonコントロールは、先述のように「リボン」形式のUIをアプリケーションやWebページに組み込むためのコントロールです。リボンは、タブページになっており、「リボングループ」「タブグループ」「ボタングループ」「アプリケーションメニュー」「クイックアクセスツールバー」などで構成されています。

Excel 2007のリボンの構成
Excel2007のリボンの構成

 これらは、xamRibbonコントロールでは階層状のオブジェクト構造になっており、次のようなオブジェクトモデルとして表されます。

xamRibbonクラスのオブジェクトモデル(ヘルプファイルより抜粋)
xamRibbonクラスのオブジェクトモデル(ヘルプファイルより抜粋)

xamlによるxamRibbonコントロールの作成

 では、実際にxamRibbonコントロールをWindowsアプリケーションに組み込んでみましょう。

1. 初めてNetAdvantage for WPFを使ったプロジェクトを作成する場合は、新しいプロジェクトを選ぶテンプレートで、「WPFアプリケーション」を選びます。
テンプレートで「WPFアプリケーション」または「WPFブラウザアプリケーション」を選ぶ
テンプレートで「WPFアプリケーション」または「WPFブラウザアプリケーション」を選ぶ
2. そして、NetAdvantage for WPFのxamRibbonコントロールを使用するために、プロジェクトに次の参照を追加します。
  • Infragistics3.Wpf.v8.1.dll
  • Infragistics3.Wpf.Editors.v8.1.dll
  • Infragistics3.Wpf.Ribbon.v8.1.dll
3つのdllを参照に追加する
テンプレートで「WPFアプリケーション」または「WPFブラウザアプリケーション」を選ぶ
3. プロジェクトには、デフォルトで「Window1.xaml」というxamlファイルが挿入されています。

 ここに、次のようにxamRibbonの名前空間の宣言「xmlns:igRibbon="http://infragistics.com/Ribbon"」を追加します。

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:igRibbon="http://infragistics.com/Ribbon"

    Title="Window1" Height="300" Width="300">
4. 次に、xamRibbonのインスタンスを作成し、名前を付けて配置を設定するコードを、「Grid」コンテナ内に記述します。
<Grid>
    <igRibbon:XamRibbon Name="XamRibbon1" VerticalAlignment="Top">
5. xamRibbonコントロールにTabsコレクションを宣言し、「Home」というタブを1つ作成します。
<igRibbon:XamRibbon.Tabs>
    <igRibbon:RibbonTabItem Header="Home">
6. リボングループをタブ「Home」に追加します。ここでは、「フォント」というグループ名をキャプション領域に表示します。
<igRibbon:RibbonGroup Caption="フォント">
7. 3つのボタンをこのボタングループに追加します。各ボタンは、Captionでボタンの表面に文字を設定し、イメージ処理で識別できるようにするためにIDプロパティを設定します。

 これで、1つのタブ、1つのリボングループを持ち、その中に3つのボタンを持ったリボンができあがります。

 

                <igRibbon:ButtonTool Caption="太字" Id="btnBold" Click="OnButtonToolClick" />
                <igRibbon:ButtonTool Caption="斜体" Id="btnItalic" Click="OnButtonToolClick" />
                <igRibbon:ButtonTool Caption="標準" Id="btnnormal" Click="OnButtonToolClick" />
            </igRibbon:RibbonGroup>
        </igRibbon:RibbonTabItem>
    </igRibbon:XamRibbon.Tabs>
</igRibbon:XamRibbon>
8. イベント処理で使用するテキストを作成しておきます。
    <Canvas Margin="0,200,0,0">
      <TextBlock Name="results"
        Canvas.Left="50" 
        Foreground="Blue" 
        FontSize="24">xamRibbon のアプリケーション </TextBlock>
    </Canvas>
</Grid>
でき上がったアプリケーション
でき上がったアプリケーション

ボタンのイベント処理

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

 そして、イベントハンドラの引数から押されたボタンの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を表示]を参照してください。

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング