[英]C# UWP - CSV in Datagrid
我一直在嘗試將我的程序從 winForms 遷移到 UWP 作為學習練習; 我是 C# 的新手。
在我使用的 winForms 代碼中:
private void BindData(string filePath)
{
DataTable dt = new DataTable();
string[] lines = File.ReadAllLines(filePath);
if (lines.Length > 0)
{
//first line to create header
globals.count = lines.Length;
string firstLine = lines[0];
string[] headerLabels = firstLine.Split(',');
foreach (string headerWord in headerLabels)
{
dt.Columns.Add(new DataColumn(headerWord));
}
//For Data
for (int i = 1; i < 100; i++)
{
string[] dataWords = lines[i].Split(',');
DataRow dr = dt.NewRow();
int columnIndex = 0;
foreach (string headerWord in headerLabels)
{
dr[headerWord] = dataWords[columnIndex++];
}
dt.Rows.Add(dr);
}
}
}
數據網格中的 UWP - CSV
要加載 csv 數據並顯示到 DataGrid 控件中,您可以參考我之前的案例回復,即加載 csv 文件並解析為 DataGrid ItemResource
。 該回復包含完整的 xaml 和后面的代碼。 請注意存儲在項目文件夾中的 csv 文件。 如果文件存儲在您場景中的其他位置,我們建議使用FileOpenPicker
訪問 csv 文件。
Xaml 代碼
<controls:DataGrid
x:Name="MyDataGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AlternatingRowBackground="Transparent"
AlternatingRowForeground="Gray"
AreRowDetailsFrozen="False"
AreRowGroupHeadersFrozen="True"
AutoGenerateColumns="False"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="False"
ColumnHeaderHeight="32"
FrozenColumnCount="0"
GridLinesVisibility="None"
HeadersVisibility="Column"
HorizontalScrollBarVisibility="Visible"
IsReadOnly="False"
Loaded="DataGrid_Loaded"
MaxColumnWidth="400"
RowDetailsVisibilityMode="Collapsed"
RowGroupHeaderPropertyNameAlternative="Range"
SelectionMode="Extended"
VerticalScrollBarVisibility="Visible"
>
<controls:DataGrid.RowGroupHeaderStyles>
<Style TargetType="controls:DataGridRowGroupHeader">
<Setter Property="Background" Value="LightGray" />
</Style>
</controls:DataGrid.RowGroupHeaderStyles>
<controls:DataGrid.Columns>
<controls:DataGridTextColumn
Binding="{Binding Id}"
Header="Id"
Tag="Id"
/>
<controls:DataGridTextColumn
Binding="{Binding Title}"
Header="Title"
Tag="Title"
/>
<controls:DataGridComboBoxColumn
Binding="{Binding Link}"
Header="Link"
Tag="Link"
/>
<controls:DataGridTextColumn
Binding="{Binding Type}"
Header="Type"
Tag="Type"
/>
<controls:DataGridTextColumn
Binding="{Binding Remark}"
Header="Remark"
Tag="Remark"
/>
<controls:DataGridTextColumn
Binding="{Binding Time}"
Header="Time"
Tag="Time"
/>
</controls:DataGrid.Columns>
</controls:DataGrid>
Model class
public class Item
{
public string Id { get; set; }
public string Title { get; set; }
public string Link { get; set; }
public string Type { get; set; }
public string Remark { get; set; }
public string Time { get; set; }
}
**Data Process**
private ObservableCollection<Item> Items;
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
using (var reader = new StreamReader("Assets\\Archive.csv",true))
using (var csv = new CsvReader(reader))
{
var records = csv.GetRecords<Item>();
Items = new ObservableCollection<Item>(records);
}
MyDataGrid.ItemsSource = Items;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.