ボタンクリックイベントでデータをバインド
「Window1.xaml」に戻り、bindBtnのクリックイベントハンドラーを設定します。
<Button Name="bindBtn" Content="データをバインド" Margin="20, 5" Click="bindBtn_Click" />
Window1.xaml.cs に移動し、イベント ハンドラー内で営業担当の情報を取得するコードを記述します。
private void bindBtn_Click(object sender, RoutedEventArgs e) { // データをDBから取得します。 DataModels.AdventureWorksEntities awe = new NASalesForce_CS.DataModels.AdventureWorksEntities(); var salesp = awe.SalesPerson .Select( sp => new { ID = sp.Employee.EmployeeID, 氏 = sp.Employee.Contact.LastName, 名 = sp.Employee.Contact.FirstName, Email = sp.Employee.Contact.EmailAddress, 雇用開始日 = sp.Employee.HireDate, 売上 = sp.SalesYTD, }); // 取得したデータをグリッドにバインドします。 this.xamDataGrid1.DataSource = salesp; }
プロジェクトを実行し、データがバインドされていることやフィールドの移動、固定機能などが使用できることを確認します。
グリッドに表示したデータをエクスポート
NetAdvantage WPF 2009 Volume1ではエクスポート機能が提供されたため、グリッドに表示したデータをXPS形式で出力することができます。exportBtnのクリックイベントハンドラーを定義します。
<Button Name="exportBtn" Content="データをエクスポート" Margin="20, 5" Click="exportBtn_Click" />
「Window1.xaml.cs」へ移動し、Infragistics.Windows.Reportingをインクルードします。
using Infragistics.Windows.Reporting;
イベントハンドラーでレポートオブジェクトを作成し、ファイルにエクスポートします。
private void exportBtn_Click(object sender, RoutedEventArgs e) { // レポート オブジェクトを作成します。 Report reportObj = new Report(); // セクションを作成します。 EmbeddedVisualReportSection section = new EmbeddedVisualReportSection(this.xamDataGrid1); // レポートにセクションを追加します。 reportObj.Sections.Add(section); // ファイルに保存します。 reportObj.Export(OutputFormat.XPS, @"grid.xps"); // ファイルを開きます。 System.Diagnostics.Process.Start(@"grid.xps"); }
実行するとXPSビューアーが起動します。
テーマ切り替えを行うために、リソースおよびデータバインディングを設定する
以前の記事でも触れましたが、NetAdvantage WPFにはあらかじめいくつかのテーマが提供されています。今回はテーマをランタイムで選択できるように設定します。まず、WindowのリソースにObjectDataProviderを宣言し、ThemeManagerからテーマ一覧を取得します。
<Window.Resources> <!--テーマ一覧を取得します。--> <ObjectDataProvider MethodName="GetThemes" ObjectType="{x:Type igThemes:ThemeManager}" x:Key="igThemesSelection" /> </Window.Resources>
次に、xamOutlookBarに追加したthemeBoxのItemsSourceにこのObjectDataProviderを設定します。
<!--ItemsSource を設定します。--> <ComboBox Name="themeBox" Margin="20,5" ItemsSource="{Binding Source={StaticResource igThemesSelection}}" />
最後にxamOutlookBar、xamDataGridのTheme
プロパティをこのコンボボックスの値にバインドします。
<igOutlookBar:XamOutlookBar Name="xamOutlookBar1" DockPanel.Dock="Left" Width="200" Theme="{Binding ElementName=themeBox, Path=SelectedItem}"> <igDP:XamDataGrid Name="xamDataGrid1" Language="Ja-JP" Theme="{Binding ElementName=themeBox, Path=SelectedItem}" >
プロジェクトを実行し、テーマを選択した際に、外観が変化することを確認してください。
一部のテーマではxamOutlookBarの外観が変化しません。これは選択されたテーマ名に相当するテーマが現時点では提供されていないためです。
まとめ
Microsoft Office Outlook 2007のナビゲーション、さらにxamDataGridを用いることにより、WPF業務用アプリケーションを迅速に開発することができました。また、提供されているテーマを使用することにより、外観の設定に必要な時間を短縮することも可能となりました。今回紹介した機能以外にもxamDataGridでは多くの機能を提供していますので、ぜひ試してみてください。