データがint []配列で表されるソートアルゴリズムの視覚的表現を作成しようとしています。ウィキペディア上のバブルソートの例:キャンバスをリフレッシュする方法
私のソートアルゴリズムのすべての型はint []配列内の2つの項目が交換されたときにイベントがItemsSwapped上げます。
// 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);
}
問題があり、キャンバス自体を更新していないこと、それだけでいくつかの時間後の最終的な解決策が表示されます。私は、キャンバス上のすべてのイベントの後にデータを表示しようとしています、これは私のコードです。どのようにイベントを発生させた後にリフレッシュできますか?
編集 - 私はUpdateLayout、InvalidateMeasure、Dispatcherオブジェクトを試しましたが、いずれもうまくいきませんでした。