Ho una collezione che desidero associare a una griglia WPF.griglia wpf con colonne dinamiche
Il problema che sto affrontando è che il numero di colonne è dinamico e dipende da una collezione. Ecco un semplice mock up:
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;}
}
Voglio che la mia vista di legarsi alla raccolta Righe, che contiene una raccolta di colonne.
La collezione My Columns contiene un enum che dovrebbe essere rappresentato da un'immagine (1 di 3 possibilità). Contiene anche una proprietà Message che deve essere visualizzata solo in una colonna (statica e solo alcune informazioni di testo). Contiene anche una stringa di intestazione che dovrebbe essere visualizzata come intestazione per quella colonna.
noti che il numero di colonne è variabile (al momento le intestazioni sono impostati a riconoscere ma questo cambierà per rappresentare i dati dinamici).
Update: Questo è dopo l'implementazione di suggerimenti da 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>
Questo quasi mi dà quello che voglio ora. Sono solo bloccato con quello che dovrei fare per le intestazioni. Qualsiasi suggerimento è benvenuto.
Per richiedere il supporto, dare il massimo delle informazioni. Include il collegamento ... – Harry
semplificato e aggiunto un collegamento. – zman
Link su come aggiungere righe e colonne in modo dinamico - http://stackoverflow.com/questions/13344788/how-to-create-listview-to-a-grid-programmatically/ – Sai