At this time, my best bet is still that you reversed the coordinates (Latitude/Longitude instead of Longitude/Latitude).
Did you check this point?
Can you share how look the input coordinates when you call 'GeographicToWebMercator'?
ShapeFile File = new ShapeFile();
File.Read(ShapeFile);
int count = 0;
foreach (PolyLine Line in File.Data)
{
count++;
Polyline Polyline = new Polyline();
for (int i = 0; i < Line.NumParts; i++)
{
int End = (i == Line.NumParts - 1) ? Line.NumPoints : Line.Parts[i + 1];
PointCollection Collection = new PointCollection();
for (int j = Line.Parts; j < End; j++)
{
MapPoint GeographicPoint = new MapPoint(Line.Points.X, Line.Points.Y);
Collection.Add(GeographicPoint.GeographicToWebMercator());
}
Polyline.Paths.Add(Collection);
}
AddToMap(Polyline);
} 

At this time, my best bet is still that you reversed the coordinates (Latitude/Longitude instead of Longitude/Latitude).
but rather the lines are simply distorted as if they have been affected by a map projection.
Notice how it is not simply the case that the positions are offset by a constant X,Y amount
At this scale, I don't think the map projection can explain the distorsion. Likely a data accuracy matter.