私のプリズム アプリケーションには、ビュー モデルから呼び出される多くの非同期操作があります。場合によっては、ビューモデルが非同期操作から結果を返すまで、ビューを無効にしてビジー インジケーターを表示したいことがあります。
私は、この動作を実装するベース ビューを作成することを考えました (つまり、ビューを無効にし、その上にビジー インジケーターを表示する IsLoading の依存関係プロパティがあります)。問題は、この基本ビューを実装する方法がわからないことです。どんな助けでも感謝します、ありがとう。
編集:仕事をする LoadingView を書いたと思います。
public class LoadingView : UserControl
{
private object content;
public bool IsLoading
{
get
{
return (bool)GetValue(IsLoadingProperty);
}
set
{
SetValue(IsLoadingProperty, value);
}
}
private ProgressRing m_RingControl;
public LoadingView()
{
m_RingControl = new ProgressRing();
m_RingControl.IsActive = false;
}
// Using a DependencyProperty as the backing store for IsLoading. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsLoadingProperty =
DependencyProperty.Register("IsLoading", typeof(bool), typeof(LoadingView), new PropertyMetadata(false, IsActivePropertyChanged));
private static void IsActivePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
LoadingView view = d as LoadingView;
if (view != null)
{
// Loading - show ring control
if (((bool)e.NewValue) == true)
{
view.content = view.Content;
view.Content = view.m_RingControl;
view.m_RingControl.IsActive = true;
}
else
{
view.m_RingControl.IsActive = false;
view.Content = view.content;
}
}
}
}
ビューモデルにIsLoading(またはIsBusy)を使用してLoadingView.IsLoadingにバインディングを配置します