ボタンのイベント処理
イベント処理は、ボタンに設定したイベントハンドラを、コードページに作成します。
そして、イベントハンドラの引数から押されたボタンのIDを取得し、TextBlockの各プロパティを操作します。
コードの先頭で、名前空間「Infragistics.Windows.Ribbon」への参照を必ず記述してください。
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
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でもかまいません。
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
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ページにもリボンが使えますから、その用途は相当幅広いものになるのではないでしょうか。
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を表示]を参照してください。