0

私はVisual Studion 2015、.NET Framework 4.5.2を使用してWPFで作業しており、インポートされたCSVファイルのコンテンツを簡単な方法でDataGridオブジェクトに割り当てたいと考えています。

<Grid>
    (...)
    <DataGrid Name="dgOutput"
              CanUserAddRows="True"
              CanUserResizeColumns="True" 
              CanUserSortColumns="True" 
              Margin="24,142,112,109"  
              Grid.ColumnSpan="2"   
              Grid.RowSpan="2" 
              IsReadOnly="True">
    </DataGrid>
</Grid>

私は次の方法を使用しています:

    public MainWindow()
    {
        InitializeComponent();

        string[] raw_text = System.IO.File.ReadAllLines("c:\\temp\\import.csv");
        string[] data_col = null;
        int x = 0;

        foreach (string text_line in raw_text)
        {
            data_col = text_line.Split(',');

            if (x == 0)
            {
                for(int i =0; i <= data_col.Count() -1; i++)
                {
                    dgOutput.Columns.Add(data_col[i]);
                }
            }
            else
            {

            }
        }
    }

ただし、次のようなエラーが発生します。

CS1503
は 'string' から 'System.Windows.Controls.DataGridColumn' に変換できません

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

列の追加と行の追加を混同しています。

このようなことを試してください。

DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = "Babylon and Ting";
// Don't think you want this... textColumn.Binding = new Binding("BabylonAndTing");
dgOutput.Columns.Add(textColumn);

dgOutput.Items.Add("Jah rasterfari!");

編集:(1つのテキスト列を追加し、その1つの列にデータを入れる)のようなものを試してください.

// First add a text column.
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = "Babylon and Ting";
dgOutput.Columns.Add(textColumn);

string[] raw_text = System.IO.File.ReadAllLines("c:\\temp\\import.csv");
string[] data_col = null;
int x = 0;

foreach (string text_line in raw_text)
{
    data_col = text_line.Split(',');

    if (x == 0)
    {
        for(int i =0; i <= data_col.Count() -1; i++)
        {
            // Then add rows to the datagrid.
            dgOutput.Items.Add(data_col[i]);
        }
    }
    else
    {

    }
}

Edit2:これがどのように行われているかを確認して複製します(今は忙しいので、これ以上詳しく説明できません)。ここから撮影..

通常、datagrid ItemsSource をデータ型のリストにバインドします。バインディングを含む例を作成し、参照用に項目サンプルを手動で追加しました。それが役に立てば幸い。

マークアップ:

<DataGrid Name="dgOutput"
          CanUserAddRows="True"
          CanUserResizeColumns="True" 
          CanUserSortColumns="True" 
          Margin="24,142,112,109"  
          Grid.ColumnSpan="2"   
          Grid.RowSpan="2" 
          IsReadOnly="True">
</DataGrid>

コード:

using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace SimpleDataGrid
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = new List<Person>
            {
                new Person{Name = "Tom", Age = 10},
                new Person{Name = "Ken", Age = 20},
                new Person{Name = "Jen", Age = 30}
            };

            dgOutput.Items.Add(new Person { Name = "Tom", Age = 10 });
            dgOutput.Items.Add(new Person { Name = "Ken", Age = 20 });
            dgOutput.Items.Add(new Person { Name = "Jen", Age = 30 });
            dgOutput.Columns.Add(new DataGridTextColumn { Header = "Name", Binding = new Binding("Name") });
            dgOutput.Columns.Add(new DataGridTextColumn { Header = "Age", Binding = new Binding("Age") });
        }
    }

    public class Person
    {
        public string Name { set; get; }
        public int Age { set; get; }
    }
}
于 2015-09-29T11:42:25.517 に答える