DataGrid中的CSV /文本Wpf

Nic*_*zee 5 c# csv wpf datagrid text

我似乎无法弄清楚如何在DataGrid中添加我的CSV文件.有人可以解释一下我的方法应该是什么吗?

假设我的csv文件中包含以下内容的CSV文件:

ID;Name;Age;Gender
01;Jason;23;Male
02;Lela;29;Female
Run Code Online (Sandbox Code Playgroud)

真的需要一些帮助

Fed*_*gui 14

忘记DataTable基础的东西.这太可怕了.它不是强类型的,它会强迫你进行各种各样的"魔术串"黑客攻击.

相反,创建一个适当的强类型数据模型:

public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    public Gender Gender { get; set; }
}

public enum Gender
{
    Male,
    Female
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个可以从文件加载数据的服务:

public static class PersonService
{
    public static List<Person> ReadFile(string filepath)
    {
        var lines = File.ReadAllLines(filepath);

        var data = from l in lines.Skip(1)
                   let split = l.Split(';')
                   select new Person
                   {
                       Id = int.Parse(split[0]),
                       Name = split[1],
                       Age = int.Parse(split[2]),
                       Gender = (Gender)Enum.Parse(typeof(Gender), split[3])
                   };

        return data.ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它来填充UI:

public partial class Window2 : Window
{
    public Window2()
    {
        InitializeComponent();

        DataContext = PersonService.ReadFile(@"c:\file.csv");
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

<Window x:Class="WpfApplication14.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window2" Height="300" Width="300">
    <DataGrid AutoGenerateColumns="True"
              ItemsSource="{Binding}"/>
</Window>
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述