Infragistics WinGrid を WPF アプリケーションで使用する

0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター

トップ 10 投稿者 
女性
投稿 22
IG Employee

元記事 (英語): Andrew Flick - http://community.infragistics.com/wpf/articles/using-the-infragistics-wingrid-in-a-wpf-application.aspx

Infragistics WinGrid WPF アプリケーションで使用する

開発者が複雑なビジネス ロジックを用いた Infragistics WinGrid をWPF で再作成することは難しくなる場合があります。 1 つの方法として、新しい WPF アプリケーションを作成して、既存の Wingrid をその WPF アプリケーションで再使用する方法があります。この記事はこの方法に必要なライブラリを紹介します。

はじめに、WindowsFormsIntegration の dll への参照を追加します。WinForms コントロールをホストする別のプロジェクトがある場合、それも参照します。WindowsFormsIntegration の dll を追加すると、WPF アプリケーションに WindowsFormsHost コンポーネントを追加することができます。Windows Forms コントロールを表示するには、Child プロパティを設定するだけです。コントロールへの参照があることを確認してください。以下のコード スニペットは、同じ Window で WinGrid と XamCarousel を表示します。

  1. <Window x:Class="XamWinFormsInteropSample.Window1"  
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.     Title="Window1" Height="517" Width="680"  
  5.         xmlns:igDP="http://infragistics.com/DataPresenter"  
  6.         xmlns:WinGrid="clr-namespace:xamWinGrid;assembly=xamWinGrid"  
  7.       Loaded="Window_Loaded">  
  8.     <Grid x:Name="MainGrid">  
  9.         <Grid.RowDefinitions>  
  10.             <RowDefinition Height="162*" />  
  11.             <RowDefinition Height="100*" />  
  12.         </Grid.RowDefinitions>  
  13.         <WindowsFormsHost Name="windowsFormsHost1">  
  14.             <WinGrid:xamWinGrid x:Name="xamWinGrid1" />  
  15.         </WindowsFormsHost>  
  16.         <igDP:XamDataCarousel Name="xamDataPresenter1" Grid.Row="1" />  
  17.     </Grid>  
  18. </Window>  

WindowsForms コントロールでは、WPF アプリケーションにアクセスする必要がある基本コントロールのプロパティ、イベントなどのことを公開するパブリック プロパティを作成できます。このプロパティでは、NorthWind データセットにバインドするために DataSource プロパティを公開します。

  1. //Windows Forms ユーザー コントロール  
  2. public System.Collections.IEnumerable DataSource  
  3. {  
  4. set  
  5.       {  
  6.         this.ultraGrid1.DataSource = value;  
  7. }  
  8. }  

 

さまざまなシナリオのバインディングを設定するには、 System.Windows.Forms.BindingSource コントロールを使用できます。Microsoft の例 http://msdn.microsoft.com/ja-jp/library/ms742687.aspx ではこのサンプルのバインディングのベースが参照できます。

  1. //WPF アプリケーション  
  2. private System.Windows.Forms.BindingSource nwBindingSource;  
  3. private NwindDataSet nwDataSet;  
  4. private NwindDataSetTableAdapters.CustomersTableAdapter customersTableAdapter =   
  5.     new XamWinFormsInteropSample.NwindDataSetTableAdapters.CustomersTableAdapter();  
  6.   
  7.           
  8. public Window1()  
  9. {  
  10. InitializeComponent();  
  11.       this.nwDataSet = new NwindDataSet();  
  12.       this.nwDataSet.DataSetName = "nwDataSet";  
  13.   
  14.       this.nwBindingSource = new System.Windows.Forms.BindingSource();  
  15.       this.nwBindingSource.DataSource = this.nwDataSet;  
  16.   
  17. }  
  18.   
  19. private void Window_Loaded(object sender, RoutedEventArgs e)  
  20. {  
  21. this.customersTableAdapter.ClearBeforeFill = true;  
  22.       this.customersTableAdapter.Fill(this.nwDataSet.Customers);  
  23.   
  24.     this.MainGrid.DataContext = this.nwBindingSource;  
  25.       this.xamDataPresenter1.DataSource = this.nwBindingSource;  
  26.       this.xamWinGrid1.DataSource = this.nwBindingSource;  
  27.   
  28.       BindingListCollectionView cv =   
  29. CollectionViewSource.GetDefaultView(this.nwBindingSource) as   
  30. BindingListCollectionView;  
  31.   
  32. cv.CurrentChanged += new EventHandler(cv_CurrentChanged);  
  33.               
  34. }  
  35.   
  36. void cv_CurrentChanged(object sender, EventArgs e)  
  37. {  
  38. BindingListCollectionView cv = sender as BindingListCollectionView;  
  39.       this.nwBindingSource.Position = cv.CurrentPosition;  
  40. }  

これで完成です。WPF アプリケーションに Windows Forms コントロールが含まれました。

詳細については、以下のリンクを参照してください。


ページ 1 / 1 (1 項目) | RSS
Infragistics Japan
インフラジスティックス ジャパン