ボタンクリックイベントでデータをバインド
「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では多くの機能を提供していますので、ぜひ試してみてください。



