Ich versuche, eine visuelle Darstellung von jedem Sortieralgorithmus zu erstellen, wo die Daten in einem int [] - Array dargestellt werden. Ein Beispiel für eine Blase Art auf wikipedia:Wie Canvas zu aktualisieren
Meine Sortieralgorithmen alle hebt ein Ereignis ItemsSwapped, wenn zwei Elemente in dem int [] Array vertauscht. Ich versuche, die Daten nach jedem Ereignisse auf Leinwand angezeigt werden, dies ist mein Code:
// Handler for ItemsSwapped event.
private void Render(object sender, ItemsSwapEventArgs e)
{
canvas.Children.Clear();
int numberOfElements = e.Data.Length;
for (int x = 0; x < numberOfElements; x++)
{
RenderValue(x, e.Data[x]);
}
// Here I should somehow refresh canvas.
}
private void RenderValue(int x, int y)
{
var value = new Ellipse
{
Width = 5,
Height = 5,
Stroke = Brushes.Black,
StrokeThickness = 2,
};
Canvas.SetTop(value, x);
Canvas.SetLeft(value, y);
canvas.Children.Add(value);
}
Das Problem ist, dass die Leinwand nicht selbst aktualisieren, es zeigt nur die endgültige Lösung nach einiger Zeit. Wie kann ich es nach jedem erhöhten Ereignis aktualisieren?
Bearbeiten - Ich versuchte mit UpdateLayout, InvalidateMeasure und Dispatcher-Objekt, aber keiner der beiden funktionierte.