Caliburn.Micro を使用した WPF アプリケーションがあります。バックグラウンドで何らかの作業が行われるのをアプリケーションが待機するようにしたい場合は、 ( MahApps.Metroからの) シャドウとプログレス リングでアプリケーションをオーバーレイできるようにしたいと考えています。
私が現在持っているものは実際に機能しますが、オーバーレイは設計時に常にオンになっています。私のShellView
ウィンドウは次のようになります。
<Window ...>
...
<Grid>
...
<Rectangle x:Name="waitShadow" Fill="#3f000000" Stroke="Black" StrokeThickness="0" Visibility="{Binding IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}}" Grid.RowSpan="2"/>
<ContentControl ... Visibility="{Binding IsWaiting, Converter={StaticResource BooleanToVisibilityConverter}}">
<Controls:ProgressRing ...> <!-- from MahApps.Metro -->
</Controls:ProgressRing>
</ContentControl>
</Grid>
</Window>
私ShellViewModel
のクラスには public bool プロパティがIsWaiting
あり、それをシャドウに設定するtrue
とリングが表示され、すべてが無効になります。設定するとfalse
通常に戻るため、バインディングが機能します ( PropertyChanged アドインでFodyを使用しています)。唯一の問題は、Visibility
プロパティが設計時に折りたたまれていないことです。
設計時にオーバーレイを機能させるより良い方法はありますか?