Będziesz potrzebował jakiś sposób, aby poinformować Grid, ile ma wierszy/kolumn. Być może po załadowaniu każdej pozycji możesz sprawdzić wartość RowIndex
i ColumnIndex
i dodać wiersze/kolumny do siatki, jeśli to konieczne.
Jako inną alternatywę, być może można wystawiać RowCount
i ColumnCount
właściwości w Twojej ViewModel że zwróci max RowIndex
i ColumnIndex
, aw przypadku Loaded siatki dodają jednak wiele kolumn/wierszy, których potrzebujesz.
Uważam, że używanie kodu w MVVM jest całkowicie dopuszczalne, jeśli kod jest związany tylko z interfejsem użytkownika.
Innym pomysłem byłoby zorganizować swoje przedmioty w kodzie opóźnieniem w 2D siatki przed wpuszczeniem go do widoku, a następnie powiązać tego starcie do DataGrid z AutoGenerateColumns=True
i nagłówki usuwane
Aktualizacja
Mój obecny rozwiązaniem tego problemu jest zastosowanie zestawu AttachedProperties
dla Grid
które pozwalają powiązać RowCount
i ColumnCount
własności do nieruchomości na ViewModel
Można znaleźć kod dla mojej wersji dołączonych właściwości na moim blogu here i mogą być używane tak:
<ItemsPanelTemplate>
<Grid local:GridHelpers.RowCount="{Binding RowCount}"
local:GridHelpers.ColumnCount="{Binding ColumnCount}" />
</ItemsPanelTemplate>
Jaki układ jesteś po? Czy to możliwe, że UniformGrid może działać? – jeffora
@jeffora: Potrzebuję co najmniej innej kolumny widht. Myślę, że UniformGrid nie jest opcją. –
Nie myśląc o tym zbyt długo, czy uważasz, że [UniformGrid] (http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.uniformgrid.aspx) może być lepszym wyborem? – Will