執筆者: 極東 IT-Engineers 代表、わんくま同盟 森 博之

動作確認環境: Visual Studio 2008 SP1、Silverlight 3、VS2008 SP1 用 Silverlight 3 Toolkit

更新日: 2010 年 6 月 25 日


Code [XAML]

XAML
<UserControl  x:Class="DataGrid_SL01.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" 
    Loaded="UserControl_Loaded"    <Grid x:Name="LayoutRoot"        <data:DataGrid x:Name="dataGrid1" /> 
    </Grid> 
</UserControl> 
 
 
 

Code [コード ビハインド C#]

C#
using System.Collections.Genericusing System.Windowsusing System.Windows.Controls; 
 
namespace DataGrid_SL01 
{ 
    public partial class MainPage : UserControl 
    { 
        public MainPage() 
        { 
            InitializeComponent(); 
        } 
 
        private void UserControl_Loaded(object sender, RoutedEventArgs e) 
        { 
            var books = new List<Book>() 
                            { 
                                new Book() {BookName = "週刊マイクロソフト", IsStock = true}, 
                                new Book() {BookName = "マイクロソフト入門", IsStock = false} 
                            }; 
             
            dataGrid1.ItemsSource = books; 
        } 
    } 
} 
 
 
 

Code [エンティティ クラス C# (Book.cs)]

C#
namespace DataGrid_SL01 
{ 
    public class Book 
    { 
        public string   BookName    { getset; } 
        public bool     IsStock     { getset; } 
    } 
} 
 
 
 

Code [コード ビハインド VB]

Visual Basic
Partial Public Class MainPage 
    Inherits UserControl 
 
    Public Sub New() 
        InitializeComponent() 
    End Sub 
 
    Private Sub UserControl_Loaded(ByVal sender As System.ObjectByVal e As System.Windows.RoutedEventArgs) 
        Dim b1 As New Book("週刊マイクロソフト"True) 
        Dim b2 As New Book("マイクロソフト入門"False) 
 
        Dim books As New List(Of Book) 
 
        books.Add(b1) 
        books.Add(b2) 
 
        dataGrid1.ItemsSource = books 
    End Sub 
End Class 
 
 
 

Code [エンティティ クラス VB (Book.vb)]

Visual Basic
Public Class Book 
 
    Private _bookName As String 
 
    Public Property BookName() As String 
        Get 
            Return _bookName 
        End Get 
        Set(ByVal value As String) 
            _bookName = value 
        End Set 
    End Property 
 
    Private _isStock As Boolean 
 
    Public Property IsStock() As Boolean 
        Get 
            Return _isStock 
        End Get 
        Set(ByVal value As Boolean) 
            _isStock = value 
        End Set 
    End Property 
 
    Public Sub New(ByVal bookName As StringByVal isStock As Boolean) 
        _bookName = bookName 
        _isStock = isStock 
    End Sub 
End Class 
 
 
 

実行結果

ポイント

DataGrid コントロールは、バインドしたデータのコレクションを行と列で表示・編集を行うコントロールです。

DataGrid コントロールは拡張コントロールであるため、「参照の追加」で [System.Windows.Controls.Data.DLL] を追加する必要があります。(ツールボックスからドラッグ & ドロップすることにより自動的に参照を追加することも可能です。)

ツールボックスを使わずに XAML を記述する場合には、xmlns の追加が必要になります。今回のサンプルでは [data] の修飾子で定義しています。

表示・編集を行いたいデータ ソースを ItemsSource プロパティに設定します。サンプルでは Loaded イベント ハンドラ内でデータ ソースの設定を行っています。

DataGrid コントロールは既定では設定されたデータ ソースに基づいて自動的に以下のような列を作成します。

データ型 生成される列
String DataGridTextColumn
Boolean DataGridCheckBoxColumn

Note: 表示する列の表示・非表示や表示順などを制御する場合については「データグリッド (DataGrid) の表示する列 (DataGridColumn) をカスタマイズするには」でご紹介しています。


Code Recipe Code Recipe
  ページのトップへ