【发布时间】:2017-10-27 09:57:50
【问题描述】:
我需要从我从 txt 获得的字符串数组集合中构建和显示 WPF 数据网格。问题是我不知道先验将是列数,即单个数组中的项目数。所以我在我的 xaml 中定义了<DataGrid Grid.Row="2" ItemsSource="{Binding Path=Rows}" />
我试图将它填充到我的视图模型中,但我不能简单地将我的数组集合(可观察集合)作为项目源,因为数据网格将只显示空白行。
我还可以在 Observable 集合上使用其他方法,因为我使用相同的方法生成数组
这是我的 Observable 集合:
ObservableCollection<string[]> Rows = new ObservableCollection<string[]>;
在这个方法中我填充了集合
foreach(ListViewItem item in wsettings.lista)
{
TextBlock line = item.Content as TextBlock;
string txt = line.Text;
string[] x = txt.Split(stringSeparators, StringSplitOptions.None);
Rows.Add(x);
}
请不要介意拆分前的第一部分。我从之前使用的文本块列表视图中获取数据(我有我的理由)。
EDIT1:使代码更具可读性
EDIT2:标题必须是用户必须设置的组合框
【问题讨论】:
-
你不应该用 TextBlocks 做这些奇怪的事情。您应该将 ItemsSource 绑定到视图模型中的 ObservableCollection,就像您尝试做的那样。如果您向我们展示您尝试这样做时的所有代码,我们可以帮助您正确处理。
-
你期望什么列标题?
-
@Daniele,您可以使用
DataTable来存储值并将其显示在DataGrid 中 -
@ASh 你能解释一下吗?我创建了一个 DataTable,并填充了我的数据。我修改了我的 xamul 如下:
但我的数据网格仍然是空的。测试是我的数据表。我什至尝试将我的数据表保存为 DataView 但没有结果 -
@DanieleSartori,
AutoGenerateColumns应该是True和ItemsSource需要 IEnumerable (dataTable.DefaultView,ItemsSource="{Binding Path=DefaultView}")。