【发布时间】:2010-12-16 21:50:05
【问题描述】:
我在 WPF 数据绑定的学习曲线上苦苦挣扎,可以举个例子。那些回答问题并链接到帮助他们“获得”WPF 数据绑定的文章的人可以获得奖励积分。
我正在尝试将自定义 Table 对象与 WPF DataGrid 绑定。
这是我的对象(我无法更改它们,签名被截断了一点):
public class MyTable
{
public int ColumnCount { get; }
public string GetColumnName(int columnIndex);
public IEnumerable<MyTableRow> GetRows();
}
public class MyTableRow
{
public MyTableCell [] Cells { get; }
}
public class MyTableCell
{
public string Value { get; }
}
所以当前Window 上的DataContext 是MyTable 的一个实例。我看不到任何明确的方法可以从我的 MyTable 对象自动生成列,所以我在代码中生成了它们:
private void dg_Table_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
MyTable tbl = e.NewValue as MyTable;
if (tbl != null)
{
//setup data grid columns
dg_Table.Columns.Clear();
for (int i = 0; i < tbl.ColumnCount; i++)
{
var column = new DataGridTextColumn()
{
Header = tbl.GetColumnName(i),
Binding = new Binding(string.Format("Cells[{0}]", i))
};
dg_Table.Columns.Add(column);
}
//end setup data grid columns
}
}
我认为下一步是将DataGrid 的ItemsSource 属性绑定到MyTable 对象上的GetRows 方法,但我不知道该怎么做。我想也许这可以使用 ObjectDataProvider 资源来完成,但我不知道如何引用 DataContext 对象上的方法。
有人可以帮我解决这个场景的 XAML 和代码吗?
【问题讨论】:
标签: c# .net wpf data-binding