3 Answers
3

There is no FrameworkElement.IsLoaded in Silverlight either, and WinRT is much closer to Silverlight than it is to WPF.

As to why it was removed, I can make an educated guess based on the documentation of the WPF property:

From a newly constructed FrameworkElement, this property starts off
false, and remains true after it is set to true, even if the element
is subsequently removed from a connected logical tree by code. true
state is set by the general presentation logic when elements are
loaded into the presentation engine.

Basically, the property in WPF is sometimes wrong. A control can load (and fire its Loaded event) multiple times, and be unloaded in the meantime. The WPF IsLoaded property can says a control is loaded even when it's not really. That's... very bad.

They probably removed it rather than fixing it because of at least one of these reasons:

They didn't want to break compatibility within WPF to older versions, or have a property which acts differently in WPF vs SL / WinRT

Tracking whether something is loaded or not is difficult and easy to get wrong, and so is inherently dangerous

Querying the loaded state of a control might be bad practice / a bad idea anyway

If you really do want to implement it yourself, then at least listen to Unloaded as well as Loaded. But I think that depending on what you're trying to do, there might be a better solution.

A "Loaded" control is simply one that is in the visual tree, so you could check if there is a path between your control and the RootVisual of the application using VisualTreeHelper, but it might not be very efficient and I would still recommend handling the event. You could implement an attached property/behavior that would give you a bindable IsLoaded property if you really need it often.

Ok, looks like I'm going to stick to setting IsLoaded myself, but it's a pain, and it doesn't make sense to me. Anyway, not too serious :) Btw, it also guarantees that all its children are also in the visual tree, right?
–
MicApr 1 '13 at 6:18

As soon as the loaded event has been fired, it would be correct to assume the visual tree has been parsed and loaded.
–
Deani HansenApr 1 '13 at 7:44