Windows Vista Beta | WinVistaBeta.com - Message | Is there an event that real fires for sure only once UserControl L

September 07, 2008  
Subject: Is there an event that real fires for sure only once UserControl L
Group: microsoft.public.windows.developer.winfx.avalon
Date: 5/21/2008 2:50:02 AM
From: =?Utf-8?B?U2Nod2FydHplbmJlcmc=?= [Email Address Protection]

It seems that the Loaded event of the UserControl at the bottom of the tree
is triggered multiple time for each containment. But i'd like code in it to
execute only once.

It's possible (say) to put a private boolean field ('hasLoaded') in my
UserControl and set it to 'false' in the first entry to OnLoad and then
'true' in the UnLoad handler. And then excecute code in OnLoaded only for
when hasLoaded==true.

But isnt there some better way to make sure that code executes just once
when a control Loads!?

Loaded is one of the UserControls Object LifeTime Events ... so it doesnt
seem to be routed.

Is there another event i should handle in this situation instead of Loaded?

Regards,
Paul






Back
Subject: Re: Is there an event that real fires for sure only once UserControl
Group: microsoft.public.windows.developer.winfx.avalon
Date: 5/23/2008 4:14:40 AM
From: Schwartzberg [Email Address Protection]

Hello,

Concerning the above it is answered in large part in the MSDN article
"Object Lifetime Events"

I quote from this articel below:

the Loaded event is raised as a coordinated effort throughout the
entire element tree (specifically, the logical tree). When all
elements in the tree are in a state where they are considered loaded,
the Loaded event is first raised on the root element. The Loaded event
is then raised successively on each child element.

Note:
This behavior might superficially resemble bubbling for a routed
event. However, no information is carried from event to event. Each
element always has the opportunity to handle its Loaded event, and
marking the event data as handled has no effect beyond that element.


Back