Похоже на ошибку в элементе управления Telerik, о которой вы можете сообщить. Чтобы проверить это, я написал ваш XML как:
<XmlDataProvider x:Key="XmlSettings" XPath="/settings/setting">
<x:XData>
<settings xmlns="">
<setting ID="OutputXOffset" value="12"/>
<setting ID="OutputYOffset" value="12"/>
</settings>
</x:XData>
</XmlDataProvider>
, а затем привязывается к нему с помощью DataGrid и Telerik RadGridView, как;
<DataGrid Grid.Row="0" AutoGenerateColumns="False"
ItemsSource="{Binding Source={StaticResource XmlSettings}}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=@ID}"/>
<DataGridTextColumn Binding="{Binding XPath=@value}"/>
</DataGrid.Columns>
</DataGrid>
<telerik:RadGridView Grid.Row="1" AutoGenerateColumns="False"
ItemsSource="{Binding Source={StaticResource XmlSettings}}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding XPath=@ID}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding XPath=@value}"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
и DataGrid работает, но RadGridView не работает и вместо этого возвращает элемент xmlElement, как вы сказали. Чтобы получить значение xmlElement, я решил написать простой конвертер (IValueConverter) для привязки. Как только я это сделал, я обнаружил, что конвертер получает весь элемент «setting» вместо атрибута, на который указывает XPath, поэтому конвертер будет выглядеть так:
Imports System.Xml
<ValueConversion(GetType(XmlElement), GetType(String))> _
Public Class xmlElement2String
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type,
parameter As Object, culture As System.Globalization.CultureInfo
) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim anXmlElement As XmlElement = TryCast(value, XmlElement)
If anXmlElement is Nothing then Return Binding.DoNothing
Return anXmlElement.SelectSingleNode(CType(parameter,String)).Value
End Function
Public Function ConvertBack(value As Object, targetType As Type,
parameter As Object, culture As System.Globalization.CultureInfo
) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
throw new System.NotImplementedException("Not implemented.")
End Function
End Class
чтобы вы добавили ссылку в вашем Xaml к конвертеру значений, как;
<local:xmlElement2String x:Key="xmlElement2String"/>
и измените привязку на;
<telerik:GridViewDataColumn DataMemberBinding="{Binding XPath=@ID,
Converter={StaticResource xmlElement2String}, ConverterParameter=@ID}"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding
Converter={StaticResource xmlElement2String}, ConverterParameter=@value}"/>
обратите внимание, что для "ID" я оставил оператор XPath, а для "значения" я оставил его, и это не имеет значения. Надеюсь, это поможет ...