Вам понадобится какой-то способ сообщить Сетка, сколько у нее строк / столбцов.Возможно, при загрузке каждого предмета вы можете проверить значения RowIndex
и ColumnIndex
и добавить строки / столбцы в сетку, если необходимо.
В качестве другой альтернативы, возможно, вы сможете выставить RowCount
и ColumnCount
свойства в вашей ViewModel, которые возвращают max RowIndex
и ColumnIndex
, а в событии Grid Loaded добавьте столько столбцов / строк, сколько вам нужно.
Я считаю вполне приемлемым использовать code-behind в MVVM IFкод относится только к пользовательскому интерфейсу.
Другая идея состоит в том, чтобы расположить элементы в вашем коде позади в 2D-сетку, прежде чем возвращать его в представление, а затем привязать эту сетку к DataGrid с помощью * 1013.* и заголовки удалены
Обновление
Мое текущее решение этой проблемы - использовать набор AttachedProperties
для Grid
, который позволяет связывать RowCount
и ColumnCount
свойства для свойства в ViewModel
Вы можете найти код моей версии прикрепленных свойств в моем блоге здесь , и их можно использовать так:
<ItemsPanelTemplate>
<Grid local:GridHelpers.RowCount="{Binding RowCount}"
local:GridHelpers.ColumnCount="{Binding ColumnCount}" />
</ItemsPanelTemplate>