Нет способа получить запрос XPath, который возвращает несколько узлов, таких как ваш, объединить их в одно значение для вас. Происходит то, что возвращается набор узлов, и, поскольку вы привязываетесь к одному строковому свойству, инфраструктура просто приводит этот набор узлов в действие, захватывая первый узел из набора и затем захватывая его узел @text.
Честно говоря, я не пробовал это сам и у меня нет времени в данный момент, но я ожидаю, что это сработает только в том случае, если вы написали собственный IValueConverter. Я предполагаю, что он передаст XmlNodeList в качестве значения для преобразования, а затем вы можете перечислить эти узлы и объединить строку через запятую самостоятельно.
Обновление
Так как предложение IValueConverter не сработало из-за того, что механизм XPath выполняет предварительное приведение, я предлагаю вам сделать следующее: вместо привязки к одному TextBlock вместо этого привязывайте к ItemsControl и определяйте ItemTemplate для ItemsControl, следующим образом:
<DataTemplate>
<TextBlock Text="{Binding}"/>,
</DataTemplate>
Примечание: Честно говоря, я использую ленивый подход в DataTemplate, и вы получите запятую даже после последнего элемента прямо сейчас. Тем не менее, вы должны быть в состоянии определить DataTemplate с триггером, который определяет, что это последний элемент и не показывает запятую.
Наконец, в зависимости от того, как вы хотите расположить данные, также установите ItemsPontel ItemsControl. Я предполагаю, что вы хотите горизонтальный поток с переносом здесь:
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>