如何将List <object>绑定到Silverlight中的DataGrid?</object>

时间:2010-03-12 02:40:20

标签: c# .net silverlight data-binding xaml

我正在尝试创建一个简单的Silverlight应用程序,该应用程序涉及解析CSV文件并在DataGrid中显示结果。我已将我的应用程序配置为解析CSV文件以返回包含名称为List<CSVTransaction>DatePayeeCategory,{的属性的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 - 时间,但这不起作用。

关于我如何处理此问题(或做得更好)的任何想法?

2 个答案:

答案 0 :(得分:2)

您是否必须将数据源分配给Datagrid控件的ItemsSource属性?

答案 1 :(得分:2)