我有一个MVVVM应用程序,其中包含使用Hammock的视图模型。
我在主页后面的代码中调用我的Get2
函数,如下所示:
private void List2_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
if (List2.SelectedItem != null)
{
((MainPageViewModel)DataContext).Get2();
NavigationService.Navigate(new Uri("/Page3.xaml", UriKind.Relative));
}
}
这是我的Get2
功能:
public void Get2()
{
[...]
restClient.BeginRequest(restRequest, Get2CallBack);
}
private void GetListStatusesCallBack(RestRequest Request, RestResponse Response, object Obj)
{
[...]
}
但是在我的Get2()
函数结束时发生的事情是,不是在之后到达回调函数,而是返回到我的MainPage代码后面,执行NavigationService.Navigate(new Uri("/Page3.xaml", UriKind.Relative));
,退出List2_SelectionChanged_1
,最后到达CallBack函数。
为什么我的CallBack功能在Get2()之后才到达?
我希望在导航事件之前联系到CallBack,
答案 0 :(得分:0)
您的方法应该是同步通话。您描述的行为需要使用同步调用。
但是,查看代码时,调用看起来是异步(BeginRequest)。
也许如果您可以发布有关变量restClient(数据类型,预期用途等)的更多详细信息,那将会很有帮助。
或者,您可以尝试在回调方法中使用此行
NavigationService.Navigate(new Uri("/Page3.xaml", UriKind.Relative));