У меня есть сценарий, который требует от меня привязать список объектов к сетке. Мне бы хотелось, чтобы такое поведение было таким: -
• Когда элемент добавляется в список, он перемещается к следующему доступному месту в сетке. (как оберточная панель)
Ниже показан мой текущий XAML.
<ItemsControl ItemsSource="{Binding Path=Contents}" Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<cc:DynamicGrid ShowGridLines="True" RowCount="{Binding Path= SelectedGridStyle.RowCount}" ColCount="{Binding Path=SelectedGridStyle.ColCount}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
В настоящее время это помещает все элементы друг на друга, потому что я не указал индекс строки или индекс столбца. Я планирую добавить следующее, чтобы исправить это
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding Path=ColumnIndex}"/>
<Setter Property="Grid.Row" Value="{Binding Path=RowIndex}"/>
<Setter Property="Grid.ColumnSpan" Value="{Binding Path=ColumnSpan}"/>
<Setter Property="Grid.RowSpan" Value="{Binding Path=RowSpan}"/>
</Style>
</ItemsControl.ItemContainerStyle>
У меня есть следующий код, который позволит мне вычислить rowIndex и columnIndex из индекса в списке.
int m_ColumnCount = 3;
int rowIndex = index / m_ColumnCount;
int columnIndex = index - (rowIndex * m_ColumnCount);
Я пытаюсь создать конвертер привязок, используя приведенные выше значения для установки этих значений. Однако этот расчет зависит от значений, содержащихся в модели представления для числа столбцов и строк. Есть ли способ получить эти значения? Можно ли достичь вышеизложенного или есть лучшее решение?