Tôi Ràng buộc một DataGrid để dữ liệu động qua IDictionary: http://www.scottlogic.co.uk/blog/colin/2009/04/binding-a-silverlight-datagrid-to-dynamic-data-via-idictionary/comment-page-1/#comment-8681Làm thế nào để tự động thêm một chuyển đổi trong code-behind
Nhưng tôi không muốn xác định bất kỳ cột trong XAML (dưới đây là cách nó được thực hiện trong Colin bài Eberhardt của
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Forename" Binding="{Binding Converter={StaticResource RowIndexConverter}, ConverterParameter=Forename}" />
</data:DataGrid.Columns>
Vì vậy, tôi đã viết đoạn mã sau để thử và làm điều tương tự trong mã phía sau, nhưng mã không gọi RowIndexConverter Something phải thiếu
mã số:..
// add columns
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = "Forename";
Binding bind = new Binding("Forename");
bind.Converter = new RowIndexConverter() ;
bind.ConverterParameter = "Forename";
textColumn.Binding = bind;
_dataGrid.Columns.Add(textColumn);
Phần còn lại của mã (vào đây để ngữ cảnh):
// generate some dummy data
Random rand = new Random();
for (int i = 0; i < 200; i++)
{
Row row = new Row();
row["Forename"] = s_names[rand.Next(s_names.Length)];
row["Surname"] = s_surnames[rand.Next(s_surnames.Length)];
row["Age"] = rand.Next(40) + 10;
row["Shoesize"] = rand.Next(10) + 5;
_rows.Add(row);
}
// bind to our DataGrid
_dataGrid.ItemsSource = _rows;
public class Row
{
private Dictionary<string, object> _data = new Dictionary<string, object>();
public object this[string index]
{
get
{
return _data[index];
}
set
{
_data[index] = value;
}
}
}
Ahh, công việc tuyệt vời, cảm ơn. –