C# Silverlight: Merkwürdiges Verhalten einer For-Schleife

min

Grünschnabel
Hallo,
Ich habe folgendes Problem. Ich lese aus einer Datei Pfadpunkte aus und versuche sie dann in meiner Silverlight Anwendung zu Rendern. Es sollen mehrere Male die gleichen Pfadpunkte benutzt werden, damit ein schönes Muster entsteht. Dafür habe ich die folgende Funktion erstellt.

C#:
        private void Renderer(PointCollection[] Ways, byte[,] flags, int[] flag)
        {
            SolidColorBrush color = new SolidColorBrush();

            for (int i = 6; i > 0; i--)
            {
                Polyline line = new Polyline();
                line.Points = Ways[5];
                if (i/2 != (i+1)/2 )
                {
                    color.Color = Colors.White;
                }
                else
                {
                    color.Color = Colors.Black;
                }
                line.Stroke = color;
                line.StrokeThickness = i;
            }
        }

Beim ersten Mal durchlaufen der Schleife funktioniert alles prima. Beim zweiten Mal meckert er in der Zeile:
C#:
                line.Points = Ways[5];
obwohl sich seit dem ersten Mal nichts verändert hat. Die Fehlermeldung lautet:
System.ArgumentException was unhandled
The parameter is incorrect.

Kennt jemand dieses Verhalten, oder besser gesagt kennt jemand eine Lösung?
Danke im Voraus.
 
Zuletzt bearbeitet von einem Moderator:
schau dir doch mal an, was zu diesem zeitpunkt in dem übergebenen zeugs drin steht und schau, ob du damit für dich selber logisch was anfangen kannst.

wenn du daraus immernoch nicht schau wirst, poste doch mal hier, was du da eigentlich übergibts.
 
Das ist gerade das interessante, ich erkenne keinen Unterschied zwischen dem ersten Durchlaufen der Schleife und dem Zweiten.

Speichert c# Beim zweiten mal die Variabel (aufgrund der gleichen Punkte) mit dem glichen Namen? Kann das der Grund sein?

Edit: Hab's mal ausprobiert mit zwei ganz unabhängigen Polylines mit den gleichen Punkten. Da klappt es.
 
Zuletzt bearbeitet:
Ich konnte das Problem etwas vereinfachen. C# ist nicht zufrieden, wenn man die gleiche Pointcollection für zwei verschiedene Polylines verwendet. Somit sieht das Problem in Codeformat so aus:
C#:
PointCollection A = new PointCollection();
[...]
Polyline A1 = new Polyline();
Polyline A2 = new Polyline();
A1.Points = A;
A2.Points = A;

Bei mir führt schon diese Konstellation zu einem Fehler, nämlich dem oben beschriebenen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück