我正在尝试创建一个简单的Silverlight应用程序,该应用程序涉及解析CSV文件并在DataGrid
中显示结果。我已将我的应用程序配置为解析CSV文件以返回包含名称为List<CSVTransaction>
,Date
,Payee
,Category
,{的属性的Memo
{1}},Inflow
。
用户单击按钮以选择要解析的文件,此时我希望填充Outflow
对象。我想我想使用数据绑定,但我似乎无法弄清楚如何让数据显示在网格中。
DataGrid
的我的XAML如下所示:
DataGrid
xaml.cs文件的代码隐藏如下:
<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>
我的想法是将 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;
}
属性绑定到XAML中的每个CsvTransaction
,然后在运行时将DataGridTextColumn
的{{1}}设置为DataContext
- 时间,但这不起作用。
关于我如何处理此问题(或做得更好)的任何想法?