Оберните все свое содержимое в сетку и поместите дополнительную сетку в конец сетки для загрузки контента.Очень важно поместить LoadingGrid ниже вашей Grid с содержимым, потому что, когда вы сделаете его видимым, он закроет оболочку отверстия и будет поверх вашего содержимого.Сетка с содержимым также может быть другого типа, чем Сетка (например, DockPanel, ...).
Пример:
<Grid>
<Grid>
<TextBlock Text="All my contents" />
</Grid>
<Grid x:Name="LoadingGrid" Background="#60FFFFFF" Visibility="Collapsed">
<TextBlock Text="Please wait while loading ..." />
</Grid>
</Grid>
Теперь вы можете связать свойство Visiblity класса LoadingGridдля свойства IsBusy в вашей ViewModel, или вы можете установить свойство Visibility для LoadGrid в коде позади.