如何将此数据绑定到DataGrid?

时间:2010-12-15 14:56:26

标签: .net wpf .net-4.0 binding wpfdatagrid

我有一个TreeView,每个TreeViewNodeTag属性中都有一个对象。当选择树视图中的节点时,我希望用DataGrid填充通过反射获得的对象的所有字段的名称和值。我无法弄清楚如何使用wpf数据绑定来做到这一点。很少有关于如何使用简单方法绑定DataGrid的示例,我也使用转换函数。

到目前为止我所获得的是一种从单个对象获取所需数据的方法:

internal static IEnumerable<Tuple<string, object>> GetFieldInfo(object o)
{
    return
        from FieldInfo info in o.GetType().GetFields()
        select Tuple.Create(info.Name, info.GetValue(o));
}

和xaml中的treeview和datagrid:

<TreeView Name="objectList"  />
<DataGrid Name="objectData" />

我无法弄清楚正确的DataBinding咒语通过((TreeViewNode)objectList.SelectedItem).Tag方法获取GetFieldInfo属性并进入objectData.ItemsSource属性。

1 个答案:

答案 0 :(得分:0)

这类似的帮助,Looking for an object graph tree-view control for WPF

否则你可以像这样绑定到选定的树视图项

<DataGrid Name="objectData" DataSource={Binding ElementName=objectList, Path=SelectedItem} />

如果您在TreeView中使用的对象中有某种属性,就像某种Key / Value对象,比如ObjectProperty(字符串键,对象值),它在一个名为ObjectProperties的集合中公开。然后你可以绑定到你的DataGrid中的那个并让它自动生成你的列和数据

<DataGrid Name="objectData" DataSource={Binding ElementName=objectList, Path=SelectedItem.ObjectProperties} />