All things work as expected. The visualization layer do not bind own map shape filling properties (ShapeFill, HighlightFill, SelectedFill) to the correspondent properties of the map shapes. It just copy values of these properties to the just added shapes which have not own properties set. So when you change value of the ShapeFill property of the VisualizationLayer object it doesn't change filling of the map shapes in the layer.
When you create new layer and add map shapes there the values of the filling properties will not be used because they are set already for all map shape data.
You need not to create new visualization layer or new collection of the shapes. All what you have to do is walk through your collection and change value of the LineData,ShapeFill property to the desired value. For example:
ChangeShapeFill(IEnumerable<MapShapeData> shapes, MapShapeFill newShapeFill)
shape.ShapeFill = newShapeFill.Clone();
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos
and start improving your app based on facts, not hunches.