Как мне связать эти данные с DataGrid? - PullRequest
2 голосов
/ 15 декабря 2010

У меня есть TreeView, и у каждого TreeViewNode есть объект в свойстве Tag. Когда узел в древовидном представлении выбран, я хочу, чтобы 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 Name="objectList"  />
<DataGrid Name="objectData" />

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

1 Ответ

0 голосов
/ 18 марта 2011

Хотелось бы что-то вроде этой справки, Поиск элемента управления древовидным графом объектов для 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} />
...