0

Windows 8 Community Preview を使用して、MSVS 11 Beta でこの Metro "Hello World" を実行しようとしています。

C# または VB を使用して初めての Metro スタイル アプリを作成する

チュートリアルでは、いくつかの「テンプレート」ページを作成するよう求められます。例えば:

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()" メソッドはありません。チュートリアルには、あるべきだと書かれています。

Q: LoadState() は、Metro SDK の新しいバージョンで非推奨になりましたか?

Q: これを機能させるには、.xaml ファイルで何か「マジック」を行う必要がありますか?

Q: ここで一体何が起こっているのですか?

誰か提案があれば、よろしくお願いします!チュートリアルでは、これらのページの一部で LoadState() メソッドをオーバーライドすることも求められます。

4

2 に答える 2

0

古い Metro アプリを移植して、Common フォルダーの LayOutAware ページを更新するのを忘れていませんか?

于 2012-07-03T18:23:02.360 に答える
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();
    }

私が行った小さな変更の 1 つは、navigationParameter の代わりに e.Parameter を使用したことです。

于 2012-06-07T16:51:15.123 に答える