К сожалению, забиндить XPath-запрос, возвращающий несколько узлов, на какое-либо свойство типа, не имеющего отношения к XML-структуре документа (например, на свойство типа string) невозможно, т.к. это потребует агрегации этого множества узлов в единственное значение (строку), а как делать эту агрегацию в общем случае - непонятно. Т.е. неясно, как собрать ОДНУ строку из нескольких значений атрибутов Value.
Могу порекомендовать вам два пути:
1) превратить ВСЕ содержимое узла Points в одну строку. Вот работающий вариант:
<Window x:Class="PolygonTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<XmlDataProvider x:Key="ChartData">
<x:XData>
<Root xmlns="">
<Chart>
<Title>График 1</Title>
<Points Color="Black">
1,1 10,10
40,30 20,20
15,87
</Points>
</Chart>
</Root>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid Name="grid" DataContext="{Binding Source={StaticResource ChartData}}">
<Polygon Name="polygon" Points="{Binding XPath=/Root/Chart[1]/Points}" Stroke="#FFD33D3D" />
</Grid>
</Window>
2) обработать XML вручную, в обход WPF и каких-либо привязок, во viewmodel-и самому собрать нормальную PointCollection, выставить эту коллекцию как свойство и забиндиться к нему из полигона обычным биндингом
Вот
обсуждение проблемы на SO, похоже ваш случай, только проще. В ответе пишут, что не помогает даже попытка применить конвертер, так как множество узлов обрезается до самого первого сразу же.