Loading [MathJax]/extensions/tex2jax.js

2012年9月30日日曜日

wpfでDataGrid

やりたいこと
DataGridにデータを登録する。
この辺に書いてあるのとは違って、データベースとかは使わないで自分で保持している配列的なものを登録する方法を紹介。
http://www.atmarkit.co.jp/fdotnet/chushin/learningdatagrid_02/learningdatagrid_02_01.html
listviewでやった方法でやってみたらできたので、これでよいのかなぁという感じですが。
step1
ツールボックスからDataGridをウィンドウにD&Dする。 D&Dしただけだと小さいので大きくする。
step2
DataGridのプロパティを表示させて、名前欄にDataGrid1と入力する。 そのあと、DataGridのXAMLに、ItemsSource="{Binding}"を追記する。
  1. <window height="350" title="MainWindow" width="525" x:class="gridviewtest.MainWindow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">  
  2.     <grid>  
  3.         <datagrid height="162" horizontalalignment="Left" itemssource="{Binding}" margin="49,91,0,0" verticalalignment="Top" width="394" x:name="DataGrid1">  
  4.   
  5.     </datagrid></grid>  
  6. </window>  
step3
イベントハンドラWindow_Loaded_1を追加して、次のようなコードを書く。
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Threading.Tasks;  
  6. using System.Windows;  
  7. using System.Windows.Controls;  
  8. using System.Windows.Data;  
  9. using System.Windows.Documents;  
  10. using System.Windows.Input;  
  11. using System.Windows.Media;  
  12. using System.Windows.Media.Imaging;  
  13. using System.Windows.Navigation;  
  14. using System.Windows.Shapes;  
  15.   
  16. using System.Collections.ObjectModel;    
  17. namespace gridviewtest  
  18. {  
  19.     /// <summary>  
  20.     /// MainWindow.xaml の相互作用ロジック  
  21.     /// </summary>  
  22.     public partial class MainWindow : Window  
  23.     {  
  24.         public MainWindow()  
  25.         {  
  26.             InitializeComponent();  
  27.         }  
  28.   
  29.         CollectionViewSource view = new CollectionViewSource();  
  30.         ObservableCollection<customer> customers = new ObservableCollection<customer>();  
  31.         private void Window_Loaded_1(object sender, RoutedEventArgs e)  
  32.         {  
  33.             int itemcount = 107;  
  34.             for (int j = 0; j < itemcount; j++)  
  35.             {  
  36.                 customers.Add(new Customer()  
  37.                 {  
  38.                     ID = j,  
  39.                     Name = "item" + j.ToString(),  
  40.                     Age = 10 + j  
  41.                 });  
  42.             }  
  43.   
  44.             view.Source = customers;  
  45.             this.DataGrid1.DataContext = view;    
  46.         }  
  47.   
  48.         class Customer  
  49.         {  
  50.             public int ID { get; set; }  
  51.             public string Name { get; set; }  
  52.             public int Age { get; set; }  
  53.         }    
  54.     }  
  55. }  
  56. </customer></customer>  
結果
こんな感じになる。
0 件のコメント:
コメントを投稿