2012-06-02 26 views
0

我想通過這個地鐵的 「Hello World」 上MSVS 11測試版的工作,與Windows 8預覽社區沒有合適的方法:地鐵/ Windows8的編譯錯誤:在LoadState()=>找到重寫

Create Your First Metro Style App using C# or VB

本教程將要求您創建一些「模板」頁面。例如:

public sealed partial class SplitPage : WindowsBlogReader.Common.LayoutAwarePage 
{ 
    ... 

本教程還要求您覆蓋在LoadState()方法用於某些網頁:

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) 
    { 
     // TODO: Assign a bindable group to this.DefaultViewModel["Group"] 
     // TODO: Assign a collection of bindable items to this.DefaultViewModel["Items"] 
     FeedData feedData = navigationParameter as FeedData;   
     if (feedData != null) 
     { 
      this.DefaultViewModel["Feed"] = feedData; 
      this.DefaultViewModel["Items"] = feedData.Items; 
     } 
     ... 

的問題是,這個死亡與討厭的編譯錯誤:

LoadState(object,System.Collections.Generic.Dictionary<string,object>): no suitable method found to override. 

在模板的自動生成代碼(SplitPage.xaml.cs)中沒有「頁面狀態管理」區域,也沒有默認的「LoadState()」方法;教程說應該是

問:LoadState()現在在Metro SDK的新版本中被棄用了嗎?

問:我是否需要在.xaml文件中做一些「魔術」來完成這項工作?

問:這裏發生了什麼?

非常感謝您提前,如果有人有任何建議! 教程還要求您替換其中一些頁面的LoadState()方法:

+0

您的基類'LayoutAwarePage'包含'LoadState',所以'protected override void LoadState(Object navigationParameter,Dictionary pageState)'將會工作。我在這裏偶然發現,因爲我的'LoadState(...)'沒有執行。 :/ –

回答

0

我也面臨同樣的問題,後來我在SplitPage.xaml.cs的方法OnNavigatedTo()中使用了相同的代碼,如下所示,工作正常。

/// <summary> 
    /// Invoked when this page is about to be displayed in a Frame. 
    /// </summary> 
    /// <param name="e">Event data that describes how this page was reached. The 
    /// Parameter property provides the group to be displayed.</param> 
    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     // TODO: Assign a bindable group to this.DefaultViewModel["Group"] 
     // TODO: Assign a collection of bindable items to this.DefaultViewModel["Items"] 
     FeedData feedData = e.Parameter as FeedData; 
     if (feedData != null) 
     { 
      this.DefaultViewModel["Feed"] = feedData; 
      this.DefaultViewModel["Items"] = feedData.Items; 
     } 


     // Select the first item automatically unless logical page navigation is 
     // being used (see the logical page navigation #region below.) 
     if (!this.UsingLogicalPageNavigation()) this.itemsViewSource.View.MoveCurrentToFirst(); 
    } 

我做的一個小改變是我用e.Parameter代替navigationParameter。

0

您是否移植了舊的Metro應用程序,並忘記更新Common文件夾中的LayOutAware頁面?