【问题标题】:How do bind a List<object> to a DataGrid in Silverlight?如何在 Silverlight 中将 List<object> 绑定到 DataGrid?
【发布时间】:2011-01-26 16:11:10
【问题描述】:

我正在尝试创建一个简单的 Silverlight 应用程序,该应用程序涉及解析 CSV 文件并将结果显示在 DataGrid 中。我已将我的应用程序配置为解析 CSV 文件以返回一个 List&lt;CSVTransaction&gt;,其中包含具有以下名称的属性:DatePayeeCategoryMemoInflowOutflow

用户单击按钮选择要解析的文件,此时我希望填充DataGrid 对象。我想我想使用数据绑定,但我似乎不知道如何让数据显示在网格中。

DataGrid 的 XAML 如下所示:

<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>

xaml.cs 文件的代码隐藏如下所示:

    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;
    }

我的想法是将CsvTransaction 属性绑定到XAML 中的每个DataGridTextColumn,然后在运行时将DataGridDataContext 设置为List&lt;CsvTransaction,但这不起作用。

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

【问题讨论】:

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


    【解决方案1】:

    您不必将数据源分配给 Datagrid 控件的 ItemsSource 属性吗?

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 2010-10-12
        • 2013-05-28
        • 2013-12-07
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多