我的 prism 应用程序有很多从我的视图模型中调用的异步操作。在某些情况下,我希望禁用视图并显示某种忙碌指示符,直到视图模型从异步操作中取回结果。
我虽然创建了一个将实现此行为的基本视图(即具有 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