Loading [MathJax]/extensions/tex2jax.js

2012年9月28日金曜日

WPF で ListView

やりたいこと
WPFのListViewに見出しをつけて、項目をいれたい。 MSのサイトでやり方とサンプルコードがおいてあるので、 これをもう少し簡単に説明したい。 MSのサイトに記載されている以上のことはなにもやってないので、そちらで理解できる方はまったく見る必要なし。
◆説明
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.listview(v=vs.80).aspx
◆MSのサンプル
http://code.msdn.microsoft.com/windowsdesktop/CSWPFPaging-ce1ce482
どんなのを作るか?
Step1
ツールボックスの中のListViewをWPFのウィンドウにはっつける。
Step2
XAMLのソース(UIの下にあるXML)を以下のように書き換える。
  1. <listview margin="18,32,20,45" name="listView1" itemssource="{Binding}">  
  2.     <listview.view>  
  3.         <gridview>  
  4.             <gridviewcolumn header="ID" displaymemberbinding="{Binding ID}" width="50">  
  5.             <gridviewcolumn header="Name" displaymemberbinding="{Binding Name}" width="100">  
  6.             <gridviewcolumn header="Age" displaymemberbinding="{Binding Age}" width="100">  
  7.              
  8.         </gridviewcolumn></gridviewcolumn></gridviewcolumn></gridview>  
  9.     </listview.view>  
  10. </listview>  
これで見出しができる。ここまででこんな感じになる。
Step3
Loded のイベントハンドラを追加する。
Step4
あとはコードのほうに、こんな感じのソースを書く。(MSのサンプルから少し省いた。)
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Data;  
  8. using System.Windows.Documents;  
  9. using System.Windows.Input;  
  10. using System.Windows.Media;  
  11. using System.Windows.Media.Imaging;  
  12. using System.Windows.Navigation;  
  13. using System.Windows.Shapes;  
  14.   
  15. using System.Collections.ObjectModel;  
  16.   
  17.   
  18. namespace WpfApplication1  
  19. {  
  20.     /// <summary>  
  21.     /// MainWindow.xaml の相互作用ロジック  
  22.     /// </summary>  
  23.     public partial class MainWindow : Window  
  24.     {  
  25.         public MainWindow()  
  26.         {  
  27.             InitializeComponent();  
  28.         }  
  29.   
  30.         CollectionViewSource view = new CollectionViewSource();  
  31.         ObservableCollection<customer> customers = new ObservableCollection<customer>();  
  32.         private void Window_Loaded(object sender, RoutedEventArgs e)  
  33.         {  
  34.   
  35.             int itemcount = 107;  
  36.             for (int j = 0; j < itemcount; j++)  
  37.             {  
  38.                 customers.Add(new Customer()  
  39.                 {  
  40.                     ID = j,  
  41.                     Name = "item" + j.ToString(),  
  42.                     Age = 10 + j  
  43.                 });  
  44.             }  
  45.   
  46.             view.Source = customers;  
  47.             this.listView1.DataContext = view;  
  48.         }  
  49.     }  
  50.     class Customer  
  51.     {  
  52.         public int ID { get; set; }  
  53.         public string Name { get; set; }  
  54.         public int Age { get; set; }  
  55.     }  
  56. }  
  57. </customer></customer>  
つまついた点
listviewのコントロールを貼り付けたら、あとはWindowsのFormと同じだろう。というのりでやってみたら、全然ビルドが通らなかった。
0 件のコメント:
コメントを投稿