1

我有一个 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 函数。

为什么在 Get2() 之后没有达到我的回调函数?

我希望在导航事件之前到达回调,

4

1 回答 1

0

您的方法应该是同步调用。您所描述的行为需要使用同步调用。

但是,查看您的代码,调用看起来是异步的(BeginRequest)。

也许如果您可以发布有关变量 restClient (数据类型、预期用途等)的更多详细信息,那将会很有帮助。

或者,您可以尝试在回调方法中使用此行

NavigationService.Navigate(new Uri("/Page3.xaml", UriKind.Relative));
于 2014-02-23T17:50:17.553 回答