2012年6月27日水曜日

[WPF]DataGrid--試作1

これまではよく分からず、ちょっと避けていたDataGridを使ってみる。

とっても便利なコントロールっぽい。
書き慣れない部分もあるので、少しずつ小出しで書いてみよう。



まずは、プロジェクトを作成。 Grid内にDataGridを配置。
<Window x:Class="TestDataGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
 <Grid>
  <DataGrid x:Name="NameList" AutoGenerateColumns="False"
            HorizontalAlignment="Left" Margin="10,10,0,0" 
            VerticalAlignment="Top">
      <DataGrid.Columns>
            <DataGridTextColumn Header="本名" 
                      Binding="{Binding Name}"/>
            <DataGridTextColumn Header="源氏名" 
                          Binding="{Binding StageName}"/>
            <DataGridTextColumn Header="指名番号" 
                          Binding="{Binding IdNumber}"/>
            <DataGridTextColumn Header="登録日" 
                          Binding="{Binding Registered}"/>
       </DataGrid.Columns>
  </DataGrid>
 </Grid>
</Window>
見た目はこんな感じ。

 













次に、データを作成。
namespace TestDataGrid
{
 /// <summary>
 /// MainWindow.xaml の相互作用ロジック
 /// </summary>
 public partial class MainWindow : Window
 {
  public MainWindow()
  {
      InitializeComponent();
  }
 }

 public class TestDataContext
 {
   public ObservableCollection<NameData> dataList;
   public void LoadDataList()
   {
     this.dataList = new ObservableCollection<NameData>();
      dataList.Clear();

  int count = 6;
  for (int i = 0; i < count; i++)
  {
    NameData info = new NameData();
    info.Name = "ちひろ" + i;
    info.StageName = "せん" + i;
    info.IdNumber = "1000" + i;
    info.Registered = "2012/07/1" + i;
    dataList.Add(info);
  }
 }
  }

  /// <summary> 
  /// 名前情報 
  /// </summary> 
  public class NameData
  {
    public String Name { get; set; }
    public String StageName { get; set; }
    public String IdNumber { get; set; }
    public String Registered { get; set; }
  } 
}

【試作1】
まずは、普通にItemsSourceプロパティにリストをセットして表示。
TestDataContext testData;
public MainWindow()
{
   InitializeComponent();

   this.testData = new TestDataContext();
   this.testData.LoadDataList();
   this.NameList.ItemsSource = this.testData.dataList;
}

これはOK。














一番下の段は、DataGridが編集可能な設定になっているため。
IsReadOnly=Trueにすると表示されない。(デフォルトではFalse)


0 件のコメント:

コメントを投稿