WPF has both a Loaded even and an Initialized event.
Initializing and loading a control tend to happen at about the same time, and consequently these events fire at roughly the same time.
1) The Initialized event is for the element creation and to set all its property
2) The Loaded event will built and initialize the element and also it runs on the layout, data has been bound.
ISupportInitialize is the interface used to intialize the elements, and when the EndInit method of that interface is called, the IsInitialized property is set to true, and the Initialized event is fired.
For example, in this Xaml:
the Button will be created, BeginInit will be called, the Width property will be set, the Content property will be set (to "Testing"), and then EndInit will be called.
The Loaded event fires when an element is not only initialized, but it is about to be rendered.
The motivation for the Loaded event is the typical scenario where you want to do some initialization in your application at load-time.
Loaded event fires after layout and data binding have had a chance to run, but just before the first render. (And note that if you do anything in your Loaded event handler that invalidates layout, it might be necessary to re-run it before rendering.)
Following is the life cycle of a simple button
Button.IsInitialized goes true
Button.Initialized event is raised
Page.IsInitialized goes true
Page.Initialized event is raised
Page IsLoaded goes to true
Button IsLoaded goes to true
Page.Loaded is raised
Button.Loaded is raised