Mam kolekcję, którą chcę powiązać z siatką WPF.siatka wpf z dynamicznymi kolumnami
Problem, który napotykam, polega na tym, że liczba kolumn jest dynamiczna i zależy od kolekcji. Oto prosty przykład:
public interface IRows
{
string Message{get;}
IColumns[] Columns{get;}
}
public interface IColumns
{
string Header {get;}
AcknowledgementState AcknowledgementState{get;}
}
public interface IViewModel
{
ObservableCollection<IRows> Rows {get;}
}
Chcę, aby mój widok był powiązany z kolekcją Wiersze zawierającą kolekcję kolumn.
Kolekcja Moje kolumny zawiera wyliczenie, które powinno być reprezentowane przez obraz (1 z 3 możliwości). Zawiera także właściwość Message, która powinna być wyświetlana tylko w jednej kolumnie (statyczna i jest to tylko część informacji tekstowych). Zawiera również ciąg nagłówka, który powinien być wyświetlany jako nagłówek tej kolumny.
Należy zauważyć, że liczba kolumn jest zmienna (w tej chwili nagłówki są ustawione, aby potwierdzić, ale to się zmieni do reprezentowania danych dynamicznych).
Aktualizacja: To jest po wdrożeniu sugestii Rachel
<ItemsControl
ItemsSource="{Binding Items, Converter={StaticResource PresentationConverter}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid ShowGridLines="true"
local:GridHelpers.RowCount="{Binding RowCount}"
local:GridHelpers.ColumnCount="{Binding ColumnCount}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Row" Value="{Binding RowIndex}"/>
<Setter Property="Grid.Column" Value="{Binding ColumnIndex}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type UI:MessageEntity}">
<TextBox Text="{Binding Message}"></TextBox>
</DataTemplate>
<DataTemplate DataType="{x:Type UI:StateEntity}">
<TextBox Text="{Binding State}"></TextBox>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
To prawie daje mi to, co chcę teraz. Utknąłem tylko z tym, co powinienem zrobić dla nagłówków. Wszelkie sugestie są mile widziane.
do odbioru, daje maksimum informacji. Obejmuje link ... – Harry
Uproszczone i dodane łącze. – zman
Link do dynamicznego dodawania wierszy i kolorów - http://stackoverflow.com/questions/13344788/how-to-create-listview-to-a-grid-programmatically/ – Sai