J'essaie de créer une application Silverlight simple qui implique l'analyse d'un fichier CSV et l'affichage des résultats dans un DataGrid
. J'ai configuré mon application pour analyser le fichier CSV pour renvoyer un List<CSVTransaction>
qui contient des propriétés avec des noms: Date
, Payee
, Category
, Memo
, Inflow
, Outflow
.Comment lier une liste <object> à un DataGrid dans Silverlight?
L'utilisateur clique sur un bouton pour sélectionner un fichier à analyser, à quel point je souhaite que l'objet DataGrid
soit rempli. Je pense que je veux utiliser la liaison de données, mais je n'arrive pas à comprendre comment faire apparaître les données dans la grille.
Mon XAML pour la DataGrid
ressemble à ceci:
<data:DataGrid IsEnabled="False" x:Name="TransactionsPreview">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Date"
Binding="{Binding Date}" />
<data:DataGridTextColumn Header="Payee"
Binding="{Binding Payee}"/>
<data:DataGridTextColumn Header="Category"
Binding="{Binding Category}"/>
<data:DataGridTextColumn Header="Memo"
Binding="{Binding Memo}"/>
<data:DataGridTextColumn Header="Inflow"
Binding="{Binding Inflow}"/>
<data:DataGridTextColumn Header="Outflow"
Binding="{Binding Outflow}"/>
</data:DataGrid.Columns>
</data:DataGrid>
Le code-behind pour le fichier xaml.cs ressemble à ceci:
private void OpenCsvFile_Click(object sender, RoutedEventArgs e)
{
try
{
CsvTransObject csvTO = new CsvTransObject.ParseCSV();
//This returns a List<CsvTransaction> and passes it
//to a method which is supposed to set the DataContext
//for the DataGrid to be equal to the list.
BindCsvTransactions(csvTO.CsvTransactions);
TransactionsPreview.IsEnabled = true;
MessageBox.Show("The CSV file has a valid header and has been loaded successfully.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void BindCsvTransactions(List<CsvTransaction> listYct)
{
TransactionsPreview.DataContext = listYct;
}
Ma pensée est de lier les propriétés à CsvTransaction
chaque DataGridTextColumn
dans le code XAML, puis définissez le DataContext
pour le DataGrid
au List<CsvTransaction
lors de l'exécution, mais cela ne fonctionne pas.
Des idées sur la façon dont je pourrais aborder cela (ou faire mieux)?