【发布时间】:2016-01-10 18:29:14
【问题描述】:
这是我制作 GridView 的方式:
ListView 将包含Entry 对象,如下所示:
public class Entry
{
public Entry(BitmapImage icon = null, List<EntryKeyValuePair> entryKeyValuePairs = null)
{
Icon = icon;
EntryKeyValuePairs = entryKeyValuePairs ?? new List<EntryKeyValuePair>();
}
public BitmapImage Icon { get; set; }
public List<EntryKeyValuePair> EntryKeyValuePairs { get; }
}
EntryKeyValuePair 只是一个KeyValuePair<string,string>,其中Key 是列,Value 是列的值。我使用了 KeyValuePair 列表,因为我想保留插入顺序。无论如何,这就是我构建 GridView 的方式。
GridView = new GridView();
foreach (Column column in Category.Columns.Where(c => c.IsVisibleInTable)) {
var gridViewColumn = new GridViewColumn {
Header = column.Name,
DisplayMemberBinding = new Binding($"EntryKeyValuePairs[{column.Name}].Value")
};
GridView.Columns.Add(gridViewColumn);
}
我不知道在 DisplayMemberBinding 中设置什么绑定。如果EntryKeyValuePairs 是字典,则上述绑定将起作用。但就我而言,事实并非如此。
如果我能以某种方式访问数据对象,我可以这样做
DisplayMemberBinding = new Binding($"EntryKeyValuePairs[{entry.EntryKeyValuePairs.FindIndex(p => p.Key == column.Name)}].Value")
如何访问 ListView 在绑定时持有的当前数据对象?
【问题讨论】:
标签: wpf gridview data-binding