Давайте сначала представим некоторые доменные объекты:
Customer:
Name
Phone
List of Orders
Order:
Date
Amount
Моя сетка затем устанавливается со следующими наборами полей:
<XamDataGrid>
<XamDataGrid.FieldLayouts>
<FieldLayout Key="Customers">
<Field Name="Orders" IsExpandable="True" />
<Field Name="Name" />
<Field Name="Phone" />
</FieldLayout>
<FieldLayout ParentFieldLayoutKey="Customers">
<Field Name="Date" />
<Field Name="Amount" />
</FieldLayout>
</XamDataGrid.FieldLayouts>
</XamDataGrid>
Это прекрасно работает, когда мой список клиентов предварительно заполнен данными. Каждая строка клиента получает знак «+», и при щелчке строка расширяется, показывая список заказов.
Теперь все хорошее заканчивается ...
Мы попытались получить асинхронные заказы, которые дают нам пустую коллекцию, когда пользователь расширяет строку. По завершении асинхронного вызова коллекция обновляется, но сетка не обновляется.
Поскольку коллекция изначально пуста, сетка удаляет +, и у пользователя больше нет возможности свернуть / развернуть. Если коллекция содержит данные, когда пользователь впервые расширяет строку, сетка требует обновления, если мы добавим больше объектов в коллекцию.
Как это должно работать?