我正在努力學習WPF數據綁定的曲線,並可以使用一個例子。獎勵積分,回答問題並鏈接到幫助他們「獲得」WPF數據綁定的文章。將WPF DataGrid ItemsSource綁定到方法,IEnumerable <TableRow> GetRows(),自定義Table對象?
我想綁定自定義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
屬性綁定到GetRows
方法MyTable
對象,但我不知道如何做到這一點。我想也許這可以使用ObjectDataProvider
資源完成,但我無法弄清楚如何在DataContext對象上引用方法。
有人可以幫我用這個場景的XAML和代碼嗎?
奇怪的是,您無法綁定到未通過XAML創建的對象上方法的返回值。 – 2009-11-16 05:29:57