2010-12-15 2 views
2

У меня есть TreeView, и каждый TreeViewNode имеет объект в своем Tag. Когда выбран узел в дереве, я хочу, чтобы DataGrid было заполнено именем и значением всех полей объекта, полученных с помощью отражения. Я не могу понять, как это сделать, используя привязку данных wpf. Существует очень мало примеров того, как именно вы связываете DataGrid с помощью простых методов, и я также использую функцию преобразования.Как привязать эти данные к 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)); 
} 

и TreeView и DataGrid в XAML:

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

Я могу» t определить правильные заклинания DataBinding, чтобы получить свойство ((TreeViewNode)objectList.SelectedItem).Tag через метод GetFieldInfo и в собственность objectData.ItemsSource.

+0

Вы не должны использовать отражение для мастера/подробности подойти – 2010-12-15 15:01:04

ответ

0

Would что-то вроде этой помощи, 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 и иметь его автоматическую генерацию столбцов и данные fror вы

<DataGrid Name="objectData" DataSource={Binding ElementName=objectList, Path=SelectedItem.ObjectProperties} /> 
Смежные вопросы