views:

2109

answers:

1

I have a Silverlight application which has on it a Canvas. On that Canvas, I dynamically "paint" a bunch of stuff, but adding controls to the canvas.

I have a button outside the Canvas area which clears the content. The objects are removed (successfully). However, the Canvas area does not refresh itself immediately; it currently requires a MouseOver or other event for the Canvas itself.

What is the simplest way to have an external object invalidate a Canvas? I'm sure I'm missing something simple!

+1  A: 

It's a bit grubby, but you could try changing the visibility to 'Visible' (even though it already is) of the Canvas, so:

myCanvas.Visibility = Visibility.Visible;

We've found that this forces as redraw, even if the actual value of myCanvas.Visible hasn't changed...

Give it a go, it's only a one liner that may fix things. Although I would expect the Canvas to be redrawing anyway if you're removing things from it.

George Sealy
Somehow, my problem solved itself. However, this answer is excellent, because it is very low impact. I will likely add this to my code as a defensive measure.
pearcewg