2017-04-25 1 views
-1

Ich habe solche TabelleWpf DataGrid- Sammlung in Reihen

Table to make

ersten Spalt Monat Nummer, zweite Spalte ist die Anzahl der Tage, dritte Spalte ist die Anzahl der Tage zu machen.

und die nächsten 31 Spalten sind Dezimalwerte.

Deshalb möchte ich eine Liste dieser Werte binden, so wird mein wpf so etwas wie dieses:

<Grid> 

<DataGrid AutoGenerateColumns="False"> 

    <DataGrid.Columns> 


       <DataGridTextColumn Header="Month" Binding="{Binding Month}"/> 
       <DataGridTextColumn Header="NumberOfDays" Binding="{Binding NumberOfDays}"/> 
       <DataGridTextColumn Header="NumberOfHours" Binding="{Binding NumberOfHours}"/> 


       //so here I`d like to have collection to 31 columns 




    </DataGrid.Columns> 


</DataGrid > 
</Grid> 

Irgendwelche Ideen, wie sie machen?

Natürlich kann ich Raster verwenden und Textblöcke generieren, aber diese Lösung scheint nicht elegant zu sein.

Ich möchte es Datagrid oder ähnliches tun.

+0

machen sie genau so wie '' Month '',' "NumberOfDays" '... Spalten – ASh

Antwort

0

könnten Sie entweder erzeugen die Spalten programmatisch:

for (int i = 1; i< 32; ++i) 
{ 
    dg.Columns.Add(new DataGridTextColumn() { Header = i.ToString(), Binding = new Binding("Day" + i.ToString()) }); 
} 

Oder Sie könnten sie in Ihrem XAML-Markup definieren:

<DataGrid.Columns> 
    <DataGridTextColumn Header="Month" Binding="{Binding Month}"/> 
    <DataGridTextColumn Header="NumberOfDays" Binding="{Binding NumberOfDays}"/> 
    <DataGridTextColumn Header="NumberOfHours" Binding="{Binding NumberOfHours}"/> 
    <DataGridTextColumn Header="1" Binding="{Binding Day1}"/> 
    <DataGridTextColumn Header="2" Binding="{Binding Day2}"/> 
    //and so on 
</DataGrid.Columns> 

Sie benötigen ein öffentliches Eigentum pro Tag (Tag 1, Tag 2 hinzufügen usw.) in die Klasse, in der die Eigenschaften Month, NumberOfDays und NumberOfHours definiert sind.