【发布时间】:2014-08-13 19:55:06
【问题描述】:
我正在开发一个基于 MVVM 的 WPF 应用程序。我想将字符串列表绑定到列标题,即,如果列表包含“abc”、“xyz”、“pqr”,那么我的DataGrid 应该具有标题为 abc、xyz、pqr 的三列。这是我绑定数据网格的类。这些行存储在ObservableCollection<List<string>> 中,其中ObservableCollection 的每个元素都是一个字符串列表,它形成了行的单元格。
public class Resource
{
private ObservableCollection<string> columns;
public ObservableCollection<string> Columns
{
get
{
return columns;
}
set
{
columns = value;
}
}
private ObservableCollection<List<string>> row;
public ObservableCollection<List<string>> Row
{
get
{
return row;
}
set
{
row = value;
}
}
public Resource()
{
List<string> a = new List<string>();
a.Add("1");
a.Add("2");
List<string> b = new List<string>();
b.Add("11");
b.Add("21");
Row = new ObservableCollection<List<string>>();
Row.Add(a);
Row.Add(b);
Columns = new ObservableCollection<string>();
Columns.Add("Hello");
Columns.Add("World");
}
}
我在 Internet 上进行了很多搜索,但找不到任何可用的示例。我真的只需要通过这种方法绑定DataGrid。
【问题讨论】:
-
您希望能够对列重新排序吗?
-
@Markus 我需要按列排序,但不需要重新排序
-
根据我的经验,尽管使用附加属性是可行的,但这种方法过于繁琐且过于局限,并迫使您转向程序代码 UI 特定的事情,而这些事情确实应该在 XAML 中完成。对每个数据类型使用特定的 XAML 定义的
DataTemplate,而不是尝试“一刀切”的解决方案,这种解决方案除了非常基本的纯字符串数据类型外,并不适用于任何东西。