AutoGenerateFieldをFalseとしてXamTreeGridに階層データをバインドする場合は、子階層のコレクションを持つプロパティ名をName属性に指定したFieldインスタンスを作成してFieldLayouts.Fieldsコレクションに追加します。
<igDP:XamTreeGrid x:Name="xamDataTree1" DataSource="{Binding TreeGridData}">
<igDP:XamTreeGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False" />
</igDP:XamTreeGrid.FieldLayoutSettings>
<igDP:XamTreeGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.Fields>
<igDP:TextField Name="Name" Label="Name" />
<igDP:NumericField Name="FileSize" Label="Size" />
<igDP:DateTimeField Name="DateModified" Label="Date" />
<igDP:Field Name="Children" />
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamTreeGrid.FieldLayouts>
</igDP:XamTreeGrid>
public class ViewModel : INotifyPropertyChanged
{
public ViewModel()
{
m_treeGridData = new ObservableCollection<FileSystemNode>();
for (int i = 0; i < 10; i++)
{
List<FileSystemNode> children = new List<FileSystemNode>();
for (int j = 0; j < 3; j++)
{
children.Add(new FileSystemNode
{
ID = j,
Name = "Child" + j,
FileSize =j,
IsFolder = j % 2 == 0 ? true : false,
DateCreated = DateTime.Today.AddDays(j),
DateModified = DateTime.Today.AddDays(j + 1)
});
}
m_treeGridData.Add(new FileSystemNode { ID = i,
Name = "Test" + i,
FileSize = i,
IsFolder =i % 2 == 0 ? true : false,
DateCreated = DateTime.Today.AddDays(i),
DateModified = DateTime.Today.AddDays(i + 1),
Children = children
});
}
}
private ObservableCollection<FileSystemNode> m_treeGridData;
public ObservableCollection<FileSystemNode> TreeGridData
{
get { return m_treeGridData; }
set
{
m_treeGridData = value;
NotifyPropertyChanged("TreeGridData");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
public class FileSystemNode
{
public int ID { get; set; }
public string Name { get; set; }
public int FileSize { get; set; }
public bool IsFolder { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public List<FileSystemNode> Children { get; set; }
}