Sto tentando di creare una rappresentazione visiva di qualsiasi algoritmo di ordinamento in cui i dati sono rappresentati in una matrice int []. Un esempio di bubble sort su wikipedia:Come aggiornare la tela
miei ordinamento algoritmi tutti genera un evento ItemsSwapped quando due elementi nella int [] array sono invertiti. Sto cercando di visualizzare i dati dopo ogni evento su tela, questo è il mio codice:
// 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);
}
Il problema è, che la tela non si aggiorna per sé, solo visualizza la soluzione finale dopo un certo tempo. Come posso aggiornarlo dopo ogni evento sollevato?
Modifica - Ho provato con oggetto UpdateLayout, InvalidateMeasure e Dispatcher, ma nessuno dei due ha funzionato.