2014-02-23 24 views
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()之後沒有達到?

我想導航事件之前要達到回調,

回答

0

你的方法應該是同步調用。您所描述的行爲需要使用同步呼叫。

但是,看着你的代碼,調用看起來是異步的(BeginRequest)。也許如果你可以發佈有關變量restClient(數據類型,預期用法等)的更多細節,這將是有幫助的。

或者,你可以嘗試有在回調方法這一行

NavigationService.Navigate(new Uri("/Page3.xaml", UriKind.Relative)); 
+0

我試過,但作爲回調是C#類文件我不能使用的NavigationService – user2505650

+0

你應該可以添加將PresentationFramework.dll引用到包含C#類文件的項目。 然後你應該可以使用NavigationService。 – cvraman