Avoid blocking the main UI thread with extreme prejudice.
I would use the control BusyIndicatorfrom the Silverlight Toolkit: -
<UserControl x:Class="StackoverflowSpikes.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">
<toolkit:BusyIndicator x:Name="busyInd" >
<Grid x:Name="LayoutRoot">
</Grid>
</toolkit:BusyIndicator>
</UserControl>
Before calling Loaduse: -
busyInd.IsBusy = true;
and then LoadCompleteuse: -
busyInd.IsBusy = false;
This will block user input in the user interface without blocking the main thread, and will give you the opportunity to use some feedback on why they canβt click anything right now. You can provide your own content for a busy message using the property BustContent. Of course, if you do not like how it looks, you can customize it as you wish.
MVVM, IsBusy VM, , VM , - .