我正在加载基于调用 web 服务调用的数据透视项目。鉴于我所拥有的只是可用的异步调用,我该如何在它完成时进行捕捉?
我的主要原因是我想在等待回调时保持加载对话框。但是,我正在加载视图模型类,显然加载栏在页面类中。
老实说,如果我能知道何时加载了一个数据透视项目,那很好,但是在加载的数据透视表上设置事件处理程序似乎永远不会触发。
我正在加载基于调用 web 服务调用的数据透视项目。鉴于我所拥有的只是可用的异步调用,我该如何在它完成时进行捕捉?
我的主要原因是我想在等待回调时保持加载对话框。但是,我正在加载视图模型类,显然加载栏在页面类中。
老实说,如果我能知道何时加载了一个数据透视项目,那很好,但是在加载的数据透视表上设置事件处理程序似乎永远不会触发。
我假设您正在将您的视图数据绑定到您的视图模型。在这种情况下,您需要做的就是创建一个 bool 属性并将其设置为 true,同时加载/等待异步调用。你可以这样做:
private bool isSyncing;
public bool IsSynchronizing
{
get { return this.isSyncing; }
set
{
this.isSyncing = value;
this.RaisePropertyChanged(() => this.IsSynchronizing); //Use appropriate RaisePropertyChanged method for your MVVM implementation
}
}
在开始异步调用之前,您将设置 IsSynchronizing = true。在事件处理程序结束时设置 IsSynchronizing = false;
从您的角度来看,您可以绑定到此布尔值。对于加载栏,它可能是这样的:
<ProgressBar Visibility="{Binding IsSynchronizing, Converter={StaticResource booleanToVisibilityConverter}}" IsIndeterminate="{Binding IsSynchronizing}" Style="{StaticResource PerformanceProgressBar}" />
在您的场景中,您可以使用倒置的 BooleanToVisibilityConverter 在仍在加载时隐藏枢轴。
希望这会有所帮助,如果您需要有关使用 BooleanToVisibilityConverters 的更多信息,请告诉我
您需要连接一个类似于此代码块中所示的事件处理程序:
public void LoadData()
{
SampleDataServiceClient client = new SampleDataServiceClient();
client.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(client_GetDataCompleted);
client.GetDataAsync();
}
void client_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
this.DataContext = e.Result;
}