The attached sample has data class, UI XAML and code to test the grid inside the grid
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
}
public class Category
{
public int CategoryID { get; set; }
public string Name { get; set; }
public List<Product> Products { get; set; }
}
XAML:
<data:DataGrid x:Name="theGrid"
AutoGenerateColumns="True"
RowDetailsVisibility="VisibleWhenSelected"
HeadersVisibility="All"
>
<data:DataGrid.RowDetailsTemplate>
<DataTemplate>
<data:DataGrid Height="100" ItemsSource="{Binding Products}" AutoGenerateColumns="True" HeadersVisibility="Column"></data:DataGrid>
</DataTemplate>
</data:DataGrid.RowDetailsTemplate>
</data:DataGrid>
Code to test:
List<Category> Categories = new List<Category>();
for (int i = 1; i < 11; i++)
{
Category cat = new Category { CategoryID = i, Name = "Category" + i };
cat.Products = new List<Product>();
for (int j = 1; j < 6; j++)
{
Product p = new Product { ProductID = (i * j), Name = "Product " + (i * j).ToString() };
cat.Products.Add(p);
}
Categories.Add(cat);
}
theGrid.ItemsSource = Categories;