मैं किसी भी सॉर्टिंग एल्गोरिदम का दृश्य प्रस्तुतिकरण बनाने की कोशिश कर रहा हूं जहां डेटा int [] सरणी में प्रदर्शित होता है। विकिपीडिया पर बुलबुला तरह का एक उदाहरण:कैनवास रीफ्रेश कैसे करें
मेरे छँटाई एल्गोरिदम सभी उठाना एक घटना 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 ऑब्जेक्ट के साथ प्रयास किया, लेकिन न तो काम किया।