作成日: 2015/07/13 最終更新日: 2015/07/13
文書種別
使用方法
詳細
C1DataGridでは、RowDetailsTemplateのDataTemplateにC1DataGridを指定することにより、入れ子のDataGridを作成することができます。MVVMを使用した実装例を以下に示します。
◆View
◎サンプルコード(XAML)
◆ViewModel
◎サンプルコード(Visual Basic)
◎サンプルコード(C#)
◆Model
◎サンプルコード(Visual Basic)
◎サンプルコード(C#)
◆View
◎サンプルコード(XAML)
<Grid>
<Grid.DataContext>
<VM:ViewModel />
</Grid.DataContext>
<c1:C1DataGrid Name="ParentC1DataGrid" AutoGenerateColumns="False"
ItemsSource="{Binding DataView}" CanUserAddRows="False">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" />
<c1:DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" />
<c1:DataGridTextColumn Header="Country" Binding="{Binding Country}" />
<c1:DataGridCheckBoxColumn Header="Native" Binding="{Binding Native}" />
</c1:C1DataGrid.Columns>
<c1:C1DataGrid.RowDetailsTemplate >
<DataTemplate>
<c1:C1DataGrid x:Name="ChildC1Datagrid" AutoGenerateColumns="False"
ItemsSource="{Binding DataView, Path=Cars}" CanUserAddRows="False">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="Model" Binding="{Binding Model}" />
<c1:DataGridTextColumn Header="Year" Binding="{Binding Year}" />
</c1:C1DataGrid.Columns>
</c1:C1DataGrid>
</DataTemplate>
</c1:C1DataGrid.RowDetailsTemplate>
</c1:C1DataGrid>
</Grid>
<Grid.DataContext>
<VM:ViewModel />
</Grid.DataContext>
<c1:C1DataGrid Name="ParentC1DataGrid" AutoGenerateColumns="False"
ItemsSource="{Binding DataView}" CanUserAddRows="False">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" />
<c1:DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" />
<c1:DataGridTextColumn Header="Country" Binding="{Binding Country}" />
<c1:DataGridCheckBoxColumn Header="Native" Binding="{Binding Native}" />
</c1:C1DataGrid.Columns>
<c1:C1DataGrid.RowDetailsTemplate >
<DataTemplate>
<c1:C1DataGrid x:Name="ChildC1Datagrid" AutoGenerateColumns="False"
ItemsSource="{Binding DataView, Path=Cars}" CanUserAddRows="False">
<c1:C1DataGrid.Columns>
<c1:DataGridTextColumn Header="Model" Binding="{Binding Model}" />
<c1:DataGridTextColumn Header="Year" Binding="{Binding Year}" />
</c1:C1DataGrid.Columns>
</c1:C1DataGrid>
</DataTemplate>
</c1:C1DataGrid.RowDetailsTemplate>
</c1:C1DataGrid>
</Grid>
◆ViewModel
◎サンプルコード(Visual Basic)
Class ViewModel
Public Sub New()
_dataView = New ListCollectionView(New ObservableCollection(Of Person)(CreateData()))
End Sub
Private _dataView As ListCollectionView
Public Property DataView() As ListCollectionView
Get
Return _dataView
End Get
Set(ByVal value As ListCollectionView)
_dataView = value
End Set
End Property
Private Function CreateData() As List(Of Person)
Dim personList As List(Of Person) = New List(Of Person)()
Dim person1 As Person = New Person()
person1.FirstName = "Vito"
person1.LastName = "Corleone"
person1.Country = "United States of America"
person1.Native = True
person1.Cars = New ObservableCollection(Of Car)()
Dim car1 As Car = New Car()
car1.Model = "Toyota"
car1.Year = 1977
Dim car2 As Car = New Car()
car2.Model = "Mazda"
car2.Year = 1982
person1.Cars.Add(car1)
person1.Cars.Add(car2)
personList.Add(person1)
Return personList
End Function
End Class
Public Sub New()
_dataView = New ListCollectionView(New ObservableCollection(Of Person)(CreateData()))
End Sub
Private _dataView As ListCollectionView
Public Property DataView() As ListCollectionView
Get
Return _dataView
End Get
Set(ByVal value As ListCollectionView)
_dataView = value
End Set
End Property
Private Function CreateData() As List(Of Person)
Dim personList As List(Of Person) = New List(Of Person)()
Dim person1 As Person = New Person()
person1.FirstName = "Vito"
person1.LastName = "Corleone"
person1.Country = "United States of America"
person1.Native = True
person1.Cars = New ObservableCollection(Of Car)()
Dim car1 As Car = New Car()
car1.Model = "Toyota"
car1.Year = 1977
Dim car2 As Car = New Car()
car2.Model = "Mazda"
car2.Year = 1982
person1.Cars.Add(car1)
person1.Cars.Add(car2)
personList.Add(person1)
Return personList
End Function
End Class
◎サンプルコード(C#)
class ViewModel
{
public ViewModel()
{
_dataView = new ListCollectionView(new ObservableCollection(CreateData()));
}
private ListCollectionView _dataView;
public ListCollectionView DataView
{
get { return _dataView; }
set { _dataView = value; }
}
private List<Person> CreateData()
{
return new List<Person>()
{
new Person
{
FirstName = "Vito",
LastName = "Corleone",
Country="United States of America",
Native=true,
Cars = new ObservableCollection<Car>
{
new Car {Model = "Toyota", Year = 1977},
new Car {Model = "Mazda", Year = 1982}
}
}
};
}
}
{
public ViewModel()
{
_dataView = new ListCollectionView(new ObservableCollection
}
private ListCollectionView _dataView;
public ListCollectionView DataView
{
get { return _dataView; }
set { _dataView = value; }
}
private List<Person> CreateData()
{
return new List<Person>()
{
new Person
{
FirstName = "Vito",
LastName = "Corleone",
Country="United States of America",
Native=true,
Cars = new ObservableCollection<Car>
{
new Car {Model = "Toyota", Year = 1977},
new Car {Model = "Mazda", Year = 1982}
}
}
};
}
}
◆Model
◎サンプルコード(Visual Basic)
Class Person
Public _firstName As String
Public Property FirstName() As String
Get
Return _firstName
End Get
Set(ByVal value As String)
_firstName = value
End Set
End Property
Public _lastName As String
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal value As String)
_lastName = value
End Set
End Property
Public _country As String
Public Property Country() As String
Get
Return _country
End Get
Set(ByVal value As String)
_country = value
End Set
End Property
Public _native As Boolean
Public Property Native() As Boolean
Get
Return _native
End Get
Set(ByVal value As Boolean)
_native = value
End Set
End Property
Public _cars As ObservableCollection(Of Car)
Public Property Cars() As ObservableCollection(Of Car)
Get
Return _cars
End Get
Set(ByVal value As ObservableCollection(Of Car))
_cars = value
End Set
End Property
End Class
Class Car
Public _model As String
Public Property Model() As String
Get
Return _model
End Get
Set(ByVal value As String)
_model = value
End Set
End Property
Public _year As Integer
Public Property Year() As Integer
Get
Return _year
End Get
Set(ByVal value As Integer)
_year = value
End Set
End Property
End Class
Public _firstName As String
Public Property FirstName() As String
Get
Return _firstName
End Get
Set(ByVal value As String)
_firstName = value
End Set
End Property
Public _lastName As String
Public Property LastName() As String
Get
Return _lastName
End Get
Set(ByVal value As String)
_lastName = value
End Set
End Property
Public _country As String
Public Property Country() As String
Get
Return _country
End Get
Set(ByVal value As String)
_country = value
End Set
End Property
Public _native As Boolean
Public Property Native() As Boolean
Get
Return _native
End Get
Set(ByVal value As Boolean)
_native = value
End Set
End Property
Public _cars As ObservableCollection(Of Car)
Public Property Cars() As ObservableCollection(Of Car)
Get
Return _cars
End Get
Set(ByVal value As ObservableCollection(Of Car))
_cars = value
End Set
End Property
End Class
Class Car
Public _model As String
Public Property Model() As String
Get
Return _model
End Get
Set(ByVal value As String)
_model = value
End Set
End Property
Public _year As Integer
Public Property Year() As Integer
Get
Return _year
End Get
Set(ByVal value As Integer)
_year = value
End Set
End Property
End Class
◎サンプルコード(C#)
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Country { get; set; }
public bool Native { get; set; }
public ObservableCollection<Car> Cars { get; set; }
}
public class Car
{
public string Model { get; set; }
public int Year { get; set; }
}
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Country { get; set; }
public bool Native { get; set; }
public ObservableCollection<Car> Cars { get; set; }
}
public class Car
{
public string Model { get; set; }
public int Year { get; set; }
}
旧文書番号
81401