Tôi đang cố tạo một đại diện trực quan của bất kỳ thuật toán phân loại nào mà dữ liệu được biểu diễn trong một mảng int []. Một ví dụ về bong bóng sắp xếp trên wikipedia:Làm cách nào để làm mới canvas
thuật toán sắp xếp của tôi tất cả huy động một sự kiện ItemsSwapped khi hai mục trong int [] mảng được hoán đổi. Tôi đang cố gắng hiển thị dữ liệu sau mỗi sự kiện trên canvas, đây là mã của tôi:
// 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);
}
Vấn đề là, canvas không tự làm mới, nó chỉ hiển thị giải pháp cuối cùng sau một thời gian. Làm thế nào tôi có thể làm mới nó sau mỗi sự kiện lớn lên?
Chỉnh sửa - Tôi đã thử với đối tượng UpdateLayout, InvalidateMeasure và Dispatcher, nhưng không hoạt động.