РЕДАКТИРОВАТЬ: я открыт для другого подхода. Исходными данными является XML, но, безусловно, есть и другие способы заставить сетку данных работать.
Этот ответ заставил меня начать, но кажется, что в DataGrid все по-другому. Код работает нормально, если я не использую преобразователь значений, но если я добавляю преобразователь значений, все, что я получаю в качестве входных данных, - это пустые строки.
Хорошо, но несовершенно:
<DataGridTextColumn
Header="Length"
Binding="{Binding XPath=length/@value}}" />
Хлам:
<DataGridTextColumn
Header="Length"
Binding="{Binding XPath=length,
Converter={StaticResource valueFormattingConverter }}" />
У меня есть теория, что приведенное выше дает мне содержимое элемента для элемента ./length (это пустой элемент), но на самом деле я хочу элемент ./length, потому что атрибуты должны быть обработаны.
Хорошо, но для полей со списком:
<ComboBox Style="{StaticResource ComboButtonStyle}" Width="200"
Text="{Binding Path=., Converter={StaticResource valueFormattingConverter }}"
IsEditable="True" />
Итак, в примере с Combo метод valueFormattingConverter.Convert вызывается с XmlElement (ура!). В примере с DataGridTextColumn он вызывается с пустой строкой.
РЕДАКТИРОВАТЬ: текущие исследования указывают на то, что IMultiValueConverter мне может понадобиться.