이 같은 것이 가능합니까?WPF 그리드 컨트롤을 CSV 파일에 데이터 바인딩
현재 CSV 파일을 WPF DataGrid로 직접 읽으려고합니다. 파일에 알려진 형식이 없습니다. 즉, 해당 필드가 무엇인지 또는 얼마나 많은지 알 수 없습니다. 필자는 그리드 형식으로 전체 파일에 표시하려고합니다 (CSV 파일을 열 때 Excel이하는 것과 비슷한 방식으로).
이 같은 것이 가능합니까?WPF 그리드 컨트롤을 CSV 파일에 데이터 바인딩
현재 CSV 파일을 WPF DataGrid로 직접 읽으려고합니다. 파일에 알려진 형식이 없습니다. 즉, 해당 필드가 무엇인지 또는 얼마나 많은지 알 수 없습니다. 필자는 그리드 형식으로 전체 파일에 표시하려고합니다 (CSV 파일을 열 때 Excel이하는 것과 비슷한 방식으로).
저는 DataGrid의 WPF 변형에 익숙하지 않지만, 일반적인 .NET DataGrid 및 DataGridView 컨트롤에 익숙하지 않습니다. 이 컨트롤이 비슷한 방식으로 작동한다고 가정하면 csv 파일을 열고 라인을 한 줄씩 읽거나 탭이나 쉼표로 나누어서 DataTable에 데이터를 던지면됩니다. 거기에서 DataGrid 컨트롤의 DataSource를 DataTable로 설정하거나 사용자 지정 서식 지정 /보기가 필요한 경우 DataView를 만들고 Refresh() 메서드를 호출 할 수 있습니다.
DataGrid는 ItemsControl 컨트롤을 기반으로하며 항목은 ItemsControl.ItemsSource whioch 유형이 IEnumerable
입니다. 따라서 단순히 DataGrid에 CSV를 표시하려면 IEnumerable
을 구현하는 모든 데이터 구조에서 CSV를 읽은 다음 XAML에서 바인딩하는 코드를 통해 DataGrid.ItemsSource
속성으로 설정해야합니다. 따라서 그리드에는 전체 CSV 파일 행을 나타내는 단일 열이 있습니다. 별도의 열에 각 값을 표시하려면 IEnumerable
데이터 구조 (각 숫자는 IList<>
)는 IEnumerable
을 나타내야합니다. 기본적으로 IList<IEnumerable<object>>
입니다.
로컬 데이터 구조에서 CSV를 읽으려면 CSV를 구문 분석 한 후 가끔 까다로운 일을하기보다는 일부 무료 CSV 파싱 라이브러리를 사용하는 것이 좋습니다. 케이스는 KBCsv library을보십시오.
는 항상해야합니까 머리글 행 Binding a ListView to a Data Matrix (솔루션 같은 수 woudl 있도록 의 ListView뿐만 아니라 ItemsControl에있다) : 나는 이것이 당신이 뭘 하려는지 꽤 가까운 예를 믿는다? – user7116
해결책을 제공 할 수 있다면 가질 수 있습니다. –
더 많은 csv 읽기/쓰기 문제가 있습니다. 구문 분석 기능을 사용하는 즉시 페이징을 구현하는 것이 훨씬 쉬울 것입니다. –